NodeJS Sequelize – 多个所有权

在我的应用程序中,我有用户和联系人。 用户向其他用户发送ContactRequest。 ContactRequest有一个请求者和被请求者字段。 我不知道如何去做这件事。 我不想要一个用户,ContactRequests和ContactRequestsUsers表(如果我在用户和联系人请求上定义了hasMany或hasOne,那么这个表就会是一个sequelize)。

那么让我们先来定义一些模型 –

var User = sequelize.define('User', { id: {type: seq.INTEGER, primaryKey: true, autoIncrement: true}, username: { type: sequelize.STRING(32) } }); var ContactRequest = sequelize.define('ContactRequest', { id: {type: seq.INTEGER, primaryKey: true, autoIncrement: true} }); 

不知道我应该做什么协会。 似乎我应该可以通过多种方式来做到这一点(理论上),但是我无法得到我尝试工作的任何方式。

 // User Has Many? User.hasMany(ContactRequest, {as: 'Requester', foreignKey: 'requester'}); User.hasMany(ContactRequest, {as: 'Requestee', foreignKey: 'requestee'}); // ContactRequest Belongs to? ContactRequest.belongsTo(User, {}); // Experience Has One? ContactRequest.hasOne(User, {as: 'Requester'}); ContactRequest.hasOne(User, {as: 'Requestee'}); 

对于每个变体,我都尝试了不同的方法来检查userA是否向UserB发送了一个ContactRequest。

 // Checking if a user has a contact request? var userA = 'someuser1'; var userB = 'someuser2'; ContactRequest.find({where: {'Requester.username': userA, 'Requestee.username': userB}, include: [{model: User, as: 'Requester'}, {model: User, as: 'Requestee'}]}).success(function(cr) { console.log(cr); }); // Maybe by the user? User.find({where: {username: userA}}).success(function(someuser) { someuser.getRequestee({where: {'Requestee.username': userB}, include: [{model: User, as: 'Requestee'}]}).success(function(cr) { console.log(cr); }); }); 

不知道我哪里错了,但我不能得到这个工作。 任何帮助或预见将不胜感激。

Interesting Posts