关系为null的sequelize

Pat*_*aux 10 node.js sequelize.js

我有sequelize的问题.这是我正在尝试做的事情:

return pointsTransaction.findAndCountAll({
    where:{
        user_id: userId
    },
    limit: opts.limit,
    offset: opts.offset,
    include:[{
        model:sequelize.models.pointsPendingtransaction
    }]
});
Run Code Online (Sandbox Code Playgroud)

生成的查询如下所示:

SELECT "pointsTransaction".*,
"pointsPendingtransactions"."transaction_ptr_id" AS "pointsPendingtransactions.transactionPtrId",
"pointsPendingtransactions"."is_active" AS "pointsPendingtransactions.isActive",
"pointsPendingtransactions"."transaction_id" AS "pointsPendingtransactions.transaction_id" 
FROM (
SELECT "pointsTransaction"."id",
"pointsTransaction"."date_time" AS "dateTime",
"pointsTransaction"."details",
"pointsTransaction"."points",
"pointsTransaction"."user_id" 
FROM "points_transaction" AS "pointsTransaction" 
WHERE "pointsTransaction"."user_id" = 10002 LIMIT 1000
) AS "pointsTransaction" 
LEFT OUTER JOIN "points_pendingtransaction" AS "pointsPendingtransactions" 
ON "pointsTransaction"."id" = "pointsPendingtransactions"."transaction_id"
Run Code Online (Sandbox Code Playgroud)

所以在SQL中我只需要在查询结束时添加该行以使其工作: WHERE "pointsPendingtransactions"."transaction_id" IS null

所以我的问题是,我怎么能用续集来做到这一点?我尝试了许多不同的方法,但没有人工作......

小智 10

如果您正在使用 Sequelize.Op 中的 Sequelize 符号运算符,那么...

return pointsTransaction.findAndCountAll({
    where:{
        user_id: userId
    },
    limit: opts.limit,
    offset: opts.offset,
    include:[{
        model:sequelize.models.pointsPendingtransaction,
        where: {
            transaction_id: {
              // "$eq" changes to "[Op.eq]"
              [Op.eq]: null
            }
        }
    }]
});
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试下一步

        where: {
            transaction_id: {
              $eq: null
            }
        }
Run Code Online (Sandbox Code Playgroud)

产生 IS NULL


return pointsTransaction.findAndCountAll({
    where:{
        user_id: userId
    },
    limit: opts.limit,
    offset: opts.offset,
    include:[{
        model:sequelize.models.pointsPendingtransaction,
        where: {
            transaction_id: {
              $eq: null
            }
        }
    }]
});
Run Code Online (Sandbox Code Playgroud)