【发布时间】:2018-01-03 04:53:21
【问题描述】:
我有两个表 table1 和 table2。我想获取关系数据。我浏览了this URL,这与我的错误相同,但该解决方案不适用于我
module.exports = function (sequelize, DataTypes) {
var table1 = sequelize.define("table1", {
table1Id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
image: {type: DataTypes.STRING},
}, {
timestamps: true,
classMethods: {
associate: function (models) {
table1.belongsTo(models.table2, {
onDelete: "CASCADE",
foreignKey: {
name: "table2Id",
notEmpty: false
}
});
}
}
});
return table1;
};
另一个是:
module.exports = function (sequelize, DataTypes) {
var table2 = sequelize.define("table2", {
table2Id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
name: {type: DataTypes.STRING},
}, {
timestamps: true,
classMethods: {
associate: function (models) {
table2.hasMany(models.table1, {
onDelete: "CASCADE",
foreignKey: {
name: "table1Id",
notEmpty: false
}
});
}
}
});
return table2;
};
然后在控制器中:
models.table2.findById(req.params.id, {
include: [{model: models.table1}]
}).then(function (data) {
}).catch(Sequelize.ValidationError, function (err) {
return res.status(422).send(err.errors);
}).catch(function (err) {
console.log(err.message,"err.message")
return res.status(400).send({
message: err.message
});
});
我得到了 Table1 与 Table2 没有关联的错误
【问题讨论】:
-
你在使用 MySQL 吗?还是 SQL Server?您可能没有同时使用两者。
-
我使用mysql作为数据库
-
怎么调用 associate 方法?我的猜测是关联方法没有正确调用其中的所有模型
-
它在一个系统中工作正常,在另一个系统中不工作,所以我很困惑
-
我有两个不同的系统,它可以完美地在一个系统中工作,但不能在另一个系统上工作,所以我认为这应该只是架构的问题,但无法找到解决方案
标签: javascript sql node.js orm sequelize.js