Sequelize包括即使它为空

时间:2017-05-01 10:54:27

标签: javascript mysql node.js express orm

我使用Sequelize express和Node.js作为后端,我的sequelize中的一些数据需要包含到另一个表中,但是其中一些数据是null,所以我得到的整个结果都是null。

问题:如果数据可用,我该如何返回一些数据,如果没有数据则返回另一个数据

router.get("/scheduled/:id", function(req, res, next) {

    models.Order.findOne({

        where: {

            id: req.params.id



        },
        attributes: ['orderStatus', 'id', 'serviceId', 'orderDescription', 'orderScheduledDate'],
        include: [{
            model: models.User,
            attributes: ['firstName', 'phoneNumber']
        }]
    }).then(function(data) {

        res.status(200).send({
            data: data,
            serviceName: data["serviceId"]
        });

    });

});

我想:如果订单没有用户并且返回订单详细信息,那么结果应该返回null,而当它为null时,结果应该返回。

2 个答案:

答案 0 :(得分:14)

  

但是,相关模型上的where子句将创建inner join并仅返回具有匹配子模型的实例。要返回所有父实例,您应添加required: false以获取更多详细信息,然后选中nested-eager-loading

var users  = require('./database/models').user;

    models.Order.findOne({
    where: {
        id: req.params.id
    },attributes: ['orderStatus','id','serviceId','orderDescription','orderScheduledDate'],
    include: [
        {model: users,required: false,
        attributes: ['firstName','phoneNumber']
        }
    ]
}).then(function(data) {

    res.status(200).send({data : data,serviceName : data["serviceId"]});

});

答案 1 :(得分:0)

您可以添加属性required: false,

 const result = await company.findAndCountAll({
        where: conditions,
        distinct: true,
        include: [
          media,
          {
            model: tag,
            where: tagCond,
          },
          { model: users, where: userCond, attributes: ['id'] },
          {
            model: category_company,
            as: 'categoryCompany',
            where: categoryCond,
          },
          { model: media, as: 'logoInfo' },
          { model: city, as: 'city' },
          {
            model: employee,
            as: 'employees',
            required: false,
            include: [{
              model: media,
              as: 'avatarInfo',
            }],
            where: {
              publish: {
                [Op.ne]: -1,
              },
            },
          },
        ],
        order: [['createdAt', 'DESC']],
        ...paginate({ currentPage: page, pageSize: limit }),
      });