Node.js NodeJS Squalize——不包括在登录时的关系

Node.js NodeJS Squalize——不包括在登录时的关系,node.js,sequelize.js,Node.js,Sequelize.js,我正在为用户使用序列化和关系。例如,用户可以是客户,也可以是员工 我通过以下方式进行设置: models.users.find({ where: { id: id }, include: [ models.customers, ], limit: 1 }).then(function(result) { done(null, result); }); 主要问题是并非所有用户

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

我通过以下方式进行设置:

models.users.find({
        where: { id: id },
        include: [
           models.customers,
        ],
        limit: 1
    }).then(function(result) {

        done(null, result);

    });
主要问题是并非所有用户都是客户或员工,但似乎访问关系的唯一方法是在登录状态下使用include


我希望能够做到的是在登录时不包括关系,只使用user.customer,它会找到关系,类似于我在Laravel中所做的,您可以使用该方法检索关联的模型

models.users.findById(id).then(function(user){
    user.getCustomer().then(function(customer){
        // here you obtain customer assigned to user with id = 1
    });
});
编辑

我建议你遵循你的第一个概念。登录时,使用include选项执行find查询

为了定义用户是否为客户,您需要执行返回客户对象的查询,否则您没有任何选项来识别用户类型。我还建议您在用户模型中添加一些类型字段,可以是一些枚举,其值为customer、employee、regular,定义用户的类型。在创建新实例时,它将被设置为适当的值,例如

models.users.create { 名字:'某个名字', 客户:{ //一些客户属性 }, 类型:“客户” }, { 包括:[型号.客户] }.thenuser=>{console.loguser;};
如果按此方法操作,则可以随时通过访问user.type检查用户的状态,user.type将是上述枚举值之一。

谢谢,但是,我可以使用req.user.customer执行此操作吗?取决于您是如何实现的。我已经用我的建议更新了答案
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'); 
});