[英]Sequelize association N:M
我不知道為什么與Sequelize的關聯對我不起作用。 我嘗試了幾種功能,但是我無法輸入N:M的語法。我嘗試了幾種方法,但沒有一種適用於我。 如果有人可以幫助我,謝謝。 這些是我的表格和語句。
user.js
'use strict'
const sequelize = require('sequelize')
const db = require('../database/database')
const modelUser = db.define('usuarios', {
idusuario: {
primaryKey: true,
type: sequelize.INTEGER
},
username: {
type: sequelize.STRING
},
password: {
type: sequelize.STRING
},
email: {
type: sequelize.STRING
},
victorias: {
type: sequelize.INTEGER
},
muertes: {
type: sequelize.INTEGER
},
admin: {
type: sequelize.INTEGER
}
}, {
timestamps: false
})
module.exports = modelUser
title.js
'use strict'
const sequelize = require('sequelize')
const db = require('../database/database')
const modelTitle = db.define('titulos', {
idtitulo: {
primaryKey: true,
type: sequelize.INTEGER
},
titulo: {
type: sequelize.STRING
}
}, {
timestamps: false
})
module.exports = modelTitle
titles_users.js
'use strict'
const sequelize = require('sequelize')
const db = require('../database/database')
const modelTitle = db.define('titulos', {
fx_idtitulo: {
type: sequelize.INTEGER
},
fx_idusuario: {
type: sequelize.INTEGER
}
}, {
timestamps: false
})
module.exports = modelTitle
controllers.js
const TitlesUsers = require('../models/titles_users')
const Users = require('../models/user')
const Titles = require('../models/title')
TitlesUsers.belongsTo(Users, {foreignKey: 'fx_idusuario', sourceKey: 'idusuario'});
TitlesUsers.belongsTo(Titles, {foreignKey: 'fx_idtitulo', sourceKey: 'idtitulo'});
const users = await Users.findOne({
include: [{model:Titles}],
where: {idusuario:req.user}
})
錯誤:
(node:11284) UnhandledPromiseRejectionWarning: SequelizeEagerLoadingError: titulos is not associated to usuarios!
at Function._getIncludedAssociation (D:\Repositorios Git\battle-royale-simulator-api\node_modules\sequelize\lib\model.js:715:13)
at Function._validateIncludedElement (D:\Repositorios Git\battle-royale-simulator-api\node_modules\sequelize\lib\model.js:619:53)
at options.include.options.include.map.include (D:\Repositorios Git\battle-royale-simulator-api\node_modules\sequelize\lib\model.js:516:37)
at Array.map (<anonymous>)
at Function._validateIncludedElements (D:\Repositorios Git\battle-royale-simulator-api\node_modules\sequelize\lib\model.js:511:39)
at Promise.try.then.then (D:\Repositorios Git\battle-royale-simulator-api\node_modules\sequelize\lib\model.js:1723:14)
at tryCatcher (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\promise.js:517:31)
at Promise._settlePromise (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\promise.js:574:18)
at Promise._settlePromise0 (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\promise.js:619:10)
at Promise._settlePromises (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\promise.js:699:18)
at _drainQueueStep (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\async.js:138:12)
at _drainQueue (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\async.js:131:9)
at Async._drainQueues (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\async.js:147:5)
at Immediate.Async.drainQueues [as _onImmediate] (D:\Repositorios Git\battle-royale-simulator-api\node_modules\bluebird\js\release\async.js:17:14)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
(node:11284) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:11284) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
您需要使用belongsToMany
指定關系:
Users.belongsToMany(Titles, {through: TitlesUsers, foreignKey: 'fx_idusuario'});
Titles.belongsToMany(Users, {through: TitlesUsers, foreignKey: 'fx_idtitulo'});
請參閱Sequelize文檔中的示例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.