NodeJS Squalize -- 不包括在登录时的关系



我正在为用户使用均衡和关系。例如,用户可以是客户,也可以是员工。

我通过以下方式设置它:

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值之一)来检查用户的状态。

最新更新