gpt4 book ai didi

javascript - Sequelize 预加载根本不起作用

转载 作者:行者123 更新时间:2023-11-28 03:59:07 25 4
gpt4 key购买 nike

首先,我已经在 StackOverflow 和几乎所有地方搜索了有关此主题的每个问题,因此我询问您是否可以帮助我。

我正在使用 ExpressJS(v4.15.5) 和 Sequelize(v4.22.6) 制作一个网络应用程序。我定义了模型、迁移、关联,并为所有关联添加了一个别名,因此我将在进行预加载时使用此别名。如果我尝试立即加载特定关联,则会告诉我 XY 没有关联,当然,如果我尝试使用 {include 立即加载所有关联: [{all: true}]} 它不会返回任何关联。

我已经验证了同步是否已完成,并且在文件bin/www中:

models.sequelize.sync().then(function() {
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port, function() {
debug('Express server listening on port ' + server.address().port);
});
server.on('error', onError);
server.on('listening', onListening);
});

上面是我的模型 MessageGroupMessage 以及我的 routes/index.js 文件。

消息组模型

'use strict';

module.exports = (sequelize, DataTypes) => {
var MessageGroup = sequelize.define('MessageGroup', {
slug: DataTypes.STRING,
name: DataTypes.STRING
}, {
classMethods: {
associate: function (models) {
// associations can be defined here
MessageGroup.hasMany(models.Message, { as:'messages', foreignKey: "messageGroupId" });
}
}
});

return MessageGroup;
};

消息模型

'use strict';

module.exports = (sequelize, DataTypes) => {
var Message = sequelize.define('Message', {
slug: DataTypes.STRING,
name: DataTypes.STRING,
description: DataTypes.TEXT
}, {
classMethods: {
associate: function (models) {
// associations can be defined here
Message.belongsTo(models.MessageGroup, { as:'messageGroup', foreignKey: "messageGroupId" });
Message.hasMany(models.MessageParameter, { as:'messageParameters', foreignKey: "messageId" });
}
}
});

return Message;
};

routes/index.js 文件

<!-- language: javascript -->
const express = require('express');
const router = express.Router();
const models = require('../models');

router.get('/data', function (req, res, next) {
models.MessageGroup.findAll({include: [{all: true}]}).then(result => {
res.json({data: result});
});
});


module.exports = router;

提前致谢。

最佳答案

问题已解决。我使用的是sequelize v3 语法。在 v4 语法模型中,classMethods 消失并且关联如下所示:

 ...   
Message.associate = function (models) {
// associations can be defined here
Message.belongsTo(models.MessageGroup, { as:'messageGroup', foreignKey: "messageGroupId" });
Message.hasMany(models.MessageParameter, { as:'messageParameters', foreignKey: "messageId" });
};
...

更多信息请点击 http://docs.sequelizejs.com/manual/tutorial/upgrade-to-v4.html

关于javascript - Sequelize 预加载根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47294848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com