我正在为用户使用均衡和关系。例如,用户可以是客户,也可以是员工。
我通过以下方式设置它:
models.users.find({
where: { id: id },
include: [
models.customers,
],
limit: 1
}).then(function(result) {
done(null, result);
});
主要问题是并非所有用户都是客户或员工,但似乎访问关系的唯一方法是在登录状态下使用include
。
我希望能够做的是在登录时不包含关系,而只是使用user.customer
,它会找到关系,类似于我在Laravel中所做的
您可以做的是使用instance.getAssociation()
方法检索关联的模型
models.users.findById(id).then(function(user){
user.getCustomer().then(function(customer){
// here you obtain customer assigned to user with id = 1
});
});
编辑
我建议你遵循你的第一个概念。登录时,使用include
选项执行find
查询
models.users.findById(id, {
include: [ models.customers ]
}).then(function(user) {
if ( user.customer ) console.log('User is a customer');
else console.log('User is not a customer');
});
为了定义user
是否是客户,您需要执行返回客户对象的查询,否则您将无法识别用户类型。我还可以建议您向模型添加一些type
字段user
该字段可能是一些具有customer, employee, regular
定义用户类型的值的ENUM
。创建新实例时,它将设置为适当的值,例如
models.users.create(
{
name: 'some name',
customer: {
// some customer attributes
},
type: 'customer'
}, {
include: [ models.customers ]
}).then((user) => { console.log(user); });
如果您遵循这种方式,则可以随时通过访问user.type
(这将是上述ENUM
值之一)来检查用户的状态。