Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 续集关联N:M_Javascript_Mysql_Node.js_Express_Sequelize.js - Fatal编程技术网

Javascript 续集关联N:M

Javascript 续集关联N:M,javascript,mysql,node.js,express,sequelize.js,Javascript,Mysql,Node.js,Express,Sequelize.js,我不知道为什么与Sequelize的关联对我不起作用。我尝试了几个函数,但无法输入N:M的语法。我尝试了几个方法,但没有一个适合我。如果有人能帮我,谢谢。这些是我的表格和陈述 user.js 'use strict' const sequelize = require('sequelize') const db = require('../database/database') const modelUser = db.define('usuarios', { idusuario:

我不知道为什么与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\u 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.
(节点:11284)未处理PromiserEjectionWarning:SequelizeAgerLoadingError:Titolos未与Usarios关联!
at Function.\u getIncludedAssociation(D:\Repositorios Git\battle royale simulator api\node\u modules\sequelize\lib\model.js:715:13)
在函数处。\u validateIncludeElement(D:\Repositorios Git\battle royale simulator api\node\u modules\sequelize\lib\model.js:619:53)
位于options.include.options.include.map.include(D:\Repositorios Git\battle royale simulator api\node\u modules\sequelize\lib\model.js:516:37)
在Array.map()处
在函数处。\u验证包含删除项(D:\Repositorios Git\battle royale simulator api\node\u modules\sequelize\lib\model.js:511:39)
在Promise.try.then.then(D:\Repositorios Git\battle royale simulator api\node\u modules\sequelize\lib\model.js:1723:14)
在tryCatcher(D:\Repositorios Git\battle royale模拟器api\node\u modules\bluebird\js\release\util.js:16:23)
在Promise.\u settlePromiseFromHandler(D:\Repositorios Git\battle royale simulator api\node\u modules\bluebird\js\release\Promise.js:517:31)
在Promise.\u settlePromise(D:\Repositorios Git\battle royale simulator api\node\u modules\bluebird\js\release\Promise.js:574:18)
在Promise.\u settlePromise0(D:\Repositorios Git\battle royale simulator api\node\u modules\bluebird\js\release\Promise.js:619:10)
在Promise.\u结算建议(D:\Repositorios Git\battle royale simulator api\node\u modules\bluebird\js\release\Promise.js:699:18)
在drainQueueStep(D:\Repositorios Git\battle royale simulator api\node\u modules\bluebird\js\release\async.js:138:12)
位于drainQueue(D:\Repositorios Git\battle royale simulator api\node\u modules\bluebird\js\release\async.js:131:9)
异步绘制队列(D:\Repositorios Git\battle royale simulator api\node\u modules\bluebird\js\release\Async.js:147:5)
在Immediate.Async.drainQueues[作为_onImmediate](D:\Repositorios Git\battle royale simulator api\node\u modules\bluebird\js\release\Async.js:17:14)
运行回调时(timers.js:705:18)
在tryOnImmediate(timers.js:676:5)
在processImmediate(timers.js:658:5)
(节点:11284)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。(拒绝id:1)
(节点:11284)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。

您需要使用以下内容指定关系:

Users.belongsToMany(Titles, {through: TitlesUsers, foreignKey: 'fx_idusuario'});
Titles.belongsToMany(Users, {through: TitlesUsers, foreignKey: 'fx_idtitulo'});

请参见中的示例。

您需要使用下面的
来指定关系:

Users.belongsToMany(Titles, {through: TitlesUsers, foreignKey: 'fx_idusuario'});
Titles.belongsToMany(Users, {through: TitlesUsers, foreignKey: 'fx_idtitulo'});
请参见中的示例