node.js - Sequelize include 不适用于关联表

标签 node.js model include sequelize.js associations

我正在使用 sequelize 5.21.2

我有一个用户模型:

'use strict';
module.exports = (sequelize, Sequelize) => {
  const users = sequelize.define('users', {
    id: {
      type: Sequelize.INTEGER,
      primaryKey: true,
      autoIncrement: true,
      allowNull: false
    },
    firstname: {
      type: Sequelize.STRING,
      allowNull: false,
    },{
      timestamp: true,
      logging: console.log,
  });
  users.associate = function(models) {
    models.users.hasMany(models.messages);
  };
  return users;
};

消息模型:

'use strict';
module.exports = (sequelize, Sequelize) => {
    const messages = sequelize.define('messages', {
        id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
            autoIncrement: true,
            allowNull: false
        },
        message:{
            type: Sequelize.TEXT,
            allowNull: false
        }
    }, {
        timestamp: true,
        logging: console.log,
        scopes:{
            withUser:{
                include: [
                    {
                        model: sequelize.models.users
                    }
                ]
            }
        }
    });
    messages.associate = function(models) {
        models.messages.belongsTo(models.users);
    };
    return messages;
};

我的 Controller :

const db = require('../models');
const Messages = db.messages
exports.getOneMessage = (req, res) =>{
    Messages.scope(['withUser']).findByPk(req.query.id).then(message => {
        res.status(200).json({
            "description": "getOne - " + req.query.id,
            "message": message
        });
    }).catch(err => {
        res.status(500).json({
            "description": "Can not access",
            "error": err
        });
    });
};

我有这个错误:
Error: Include unexpected. Element has to be either a Model, an Association or an object.
  • 我试过在我的用户模型中使用 hasOne 而不是 hasMany - 没有变化
  • 我在我的用户模型中尝试了 hasMany 并删除了消息模型的belongsTo - 没有变化
  • 我试过在消息模型中使用belongsTo 并删除了hasMany of the users 模型 - 没有变化
  • 我删除了所有表并重试了所有内容 - 没有变化

  • 我究竟做错了什么?

    最佳答案

    似乎问题来自范围......
    如果我将包含在 Controller 本身中,一切都是正确的。
    我在我的项目中使用了很多范围,但唯一给我带来麻烦的是用户模型......我不知道为什么。

    const db = require('../models');
    const Messages = db.messages
    const Users = db.users
    exports.getOneMessage = (req, res) =>{
        Messages.findByPk(req.query.id, {include:[Users]}).then(message => {
            res.status(200).json({
                "description": "getOne - " + req.query.id,
                "message": message
            });
        }).catch(err => {
            res.status(500).json({
                "description": "Can not access",
                "error": err
            });
        });
    };
    

    关于node.js - Sequelize include 不适用于关联表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59512133/

    相关文章:

    node.js - Node 流捕获 Promise 的错误?

    php - 自动包含缺少的功能?

    PHP定义包含文件的范围

    javascript - 在 node.js 中将 rejectUnauthorized 与 node-fetch 一起使用

    javascript - 本地模块node.js :can't load files other than index. js

    node.js - 使用 Artifactory npm 支持

    php - Magento、getSubtotal 和 getGrandTotal 始终返回零

    javascript - 如何在 Ember JS 中获取模型数据

    python - 用于模型重定向的 django admin 自定义模板

    java - 动态包含在 JSP 模板中