Sequelize Include 在没有结果的情况下不起作用

Sequelize Include doesn't work without results

我正在执行下面的 select,当结果为 return 时效果很好,当我没有时,我会遇到这样的错误

TypeError: Cannot read property 'id' of null

这只会在他们的城市没有任何标记时发生,否则它会按预期工作。有人有这个问题吗?无论是否使用 where 子句

都会出现错误
            City.findById(req.params.id,{
                include: [{   model: Marker, as: "markers",
                          where: {
                              status: '1'
                          },
                }]
              }).then(city =>{
                console.log(city.id);
                   res.status(201).send(city);
              }) .catch(error => {
               console.log(error);
               res.status(400).send(error)
             });

城市

            module.exports = (sequelize, DataTypes) => {
              const City = sequelize.define('city', {
              name: { type: DataTypes.STRING, allowNull: false },
                status: { type: DataTypes.INTEGER, allowNull: false },
                latitude: { type: DataTypes.DECIMAL, allowNull: false },
                longitude: { type: DataTypes.DECIMAL, allowNull: false },

              }, { freezeTableName: true});
              City.associate = function(models) {
                // associations can be defined here
                 City.hasMany(models.marker,{as: 'markers', foreignKey: 'cityId'})
              };
              return City;
            };

标记

            module.exports = (sequelize, DataTypes) => {
              const Marker = sequelize.define('marker', {
                description: { type: DataTypes.STRING, allowNull: false },
                status: { type: DataTypes.INTEGER, allowNull: false },
                latitude: { type: DataTypes.DECIMAL, allowNull: false },
                longitude: { type: DataTypes.DECIMAL, allowNull: false },
                cityId: {
                   type: DataTypes.INTEGER,
                   references: {
                      model: 'city',
                      key: 'id',
                   },
                   allowNull: false,
                }

              }, { freezeTableName: true});
              Marker.associate = function(models) {
                // associations can be defined here
              };
              return Marker;
            };

查询已记录。

Executing (default): SELECT "city"."id", "city"."name", "city"."status", "city".
"latitude", "city"."longitude", "city"."createdAt", "city"."updatedAt", "markers
"."id" AS "markers.id", "markers"."description" AS "markers.description", "marke
rs"."status" AS "markers.status", "markers"."latitude" AS "markers.latitude", "m
arkers"."longitude" AS "markers.longitude", "markers"."cityId" AS "markers.cityI
d", "markers"."createdAt" AS "markers.createdAt", "markers"."updatedAt" AS "mark
ers.updatedAt" FROM "city" AS "city" INNER JOIN "marker" AS "markers" ON "city".
"id" = "markers"."cityId" AND "markers"."status" = '1' WHERE "city"."id" = '4';

是因为这一行:

console.log(city.id);

citynull 时,当查询与数据库中的任何文档都不匹配时,您的代码计算结果为 null.id,这是无效的,因此会出现错误.