Sequelize TypeError:phone.setUser不是一个函数

我有点失落,并会感谢任何帮助。 我通过我的userPhones表在我的用户表和电话表之间build立了一个M:M关联。

user.js的

  module.exports = (sequelize, DataTypes) => { const Users = sequelize.define('Users', { givenName: { type: DataTypes.STRING }, sn: { type: DataTypes.STRING }, mail: { type: DataTypes.STRING }, title: { type: DataTypes.STRING }, department: { type: DataTypes.STRING }, sAMAccountName: { type: DataTypes.STRING, primaryKey: true }, displayName: { type: DataTypes.STRING }, }, { freezeTableName: true, timestamps: false }); return Users; }; 

phone.js

  module.exports = (sequelize, DataTypes) => { const Phones = sequelize.define('Phones', { full_number: { type: DataTypes.STRING }, telephone: { type: DataTypes.STRING }, division_id: { type: DataTypes.FLOAT }, }, { freezeTableName: true, timestamps: false }); return Phones; }; 

db.js

 const Sequelize = require ('sequelize'); const sequelize = new Sequelize('db', 'user', 'password', { host: '127.0.0.1', dialect: 'mssql', pool: { max: 9, min: 0, idle: 10000 } }); const db = {}; db.Sequelize = Sequelize; db.sequelize = sequelize; //Gets models db.users = require('./models/users.js')(sequelize,Sequelize); db.phones = require('./models/phones.js')(sequelize,Sequelize); db.userPhones = sequelize.define('userPhones') //Sequelize Associations db.users.belongsToMany(db.phones, {through: 'userPhones'}); db.phones.belongsToMany(db.users, {as: 'owners', through: 'userPhones'}); // Sync SQL with Sequelize Models USE CAUTION sequelize.sync({alter:true}); module.exports = db; 

电话分配用户到电话的path

 const express = require('express'), router = express.Router(), db = require('../db') ; Phones = db.phones; UserPhones = db.UserPhones; // Single Phone User Assignment POST route router.route('/:id/users') .post((req, res) => { let users = req.body.UserSAMAccountName; Phones.findById(req.params.id) .then(function (phone) { if (!phone) { res.status(404).json({ message: 'record not found!' }) } phone.setUsers([users]) .then(associatedUsers => { res.status(200).json({ message: `${associatedUsers} added!`}); }) }) .catch(function (err) { res.status(500).json({ error: `${err}`}); }) }); module.exports = router; 

我以前能够设置分配电话给用户,反之亦然。 我不完全确定发生了什么,但有一天它停止工作,当我发布到API我现在得到:

TypeError:phone.setUsers不是一个函数

我试过运行sequelize.sync({force:true}); 只是为了testing,看看是否重新初始化所有东西都可以解决问题,但是我似乎没有把事情弄回原位。

我已阅读有关检查Phones.instance.prototypes但我不清楚如何去寻找。

更新:我没有提到,从我的用户路由运行这个没有任何问题分配给用户的电话。

用户分配电话给用户的POST路由

 const express = require('express'), router = express.Router(), db = require('../db') ; Users = db.users; UserPhones = db.UserPhones; // Single User->Phone Assignment POST route router.route('/:id/phones') .post((req, res) => { let phones = req.body.phoneID; Users.findById(req.params.id) .then(function (user) { if (!user) { res.status(404).json({ message: 'record not found!' }) } user.setPhones([phones]) .then(associatedPhones => { res.status(200).json({ message: `${associatedPhones} added!`}); }) }) .catch(function (err) { res.status(500).json(err); }) }); module.exports = router; 

尝试phone.setOwnersphone.setowners因为您已将您的用户模型关联到电话更名为“所有者”。