Sequelize Node.js的新函数在创建多对多关系后不起作用



所以我有两个模型,User和Chat。每个用户可以有多个聊天,每个聊天可以有多个人。所以我创建了一个名为UserChat-的新模型

var db = require('../db');
var Chat = require('../models/chats');
var User = require('../models/users');

var UserChat = db.connection.define("user_chat", {
    id: {
        type: db.Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    }
})
Chat.ChatModel.belongsToMany(User.UserModel, {through: {model: 'user_chat'}});
User.UserModel.belongsToMany(Chat.ChatModel, {through: {model: 'user_chat'}});

这在我的数据库中创建了一个名为user_chats的表,根据sequelize的文档,我应该能够在我的聊天模型上使用addUser,在我的用户模型上使用addChat

但当我尝试使用Chat.ChatModel.addUser(用户)时,我会收到错误"addUser不是一个函数"

这就是我如何声明聊天模型和用户模型-

var db = require('../db')
    var Chat = db.connection.define("chat", {
        chatname: {
            type: db.Sequelize.STRING,
            unique: true,
            allowNull: false
        },
        creator:{
            type: db.Sequelize.INTEGER,
            unique: false,
            allowNull: false
        }
    });
    module.exports.ChatModel = Chat;

然后是我的用户模型(简化)-

var db = require('../db')
var User = db.connection.define("user", {
    username: {
        type: db.Sequelize.STRING,
        unique: true,
        allowNull: false
    },
    password: {
        type: db.Sequelize.STRING,
        unique: false,
        allowNull: false
    },
});
module.exports.UserModel = User;

现在,如果我试图使用addUser函数或根据文档应该给我的任何新函数,我会得到一个错误,即该函数仍然不存在。

所以我的问题是我试图在实际模型上调用方法,但这些方法被添加到模型的实例中。因此,在使用addChat或addUser之前,您需要找到聊天/用户。

最新更新