我正在为我的新NodeJs项目使用Sequelize
我定义了两个模型:BusinessUnit和具有以下关联的商店:Store.belongsTo(BusinessUnit);
module.test_data_insertion = function() {
models.BusinessUnit.findOne({
where: {
BUID: "001"
}
}).then(element => {
fs.readdirSync(dir).forEach(function(file) {
var contents = fs.readFileSync(dir + file);
var jsonContent = JSON.parse(contents);
models.Store.create({
StoreId: jsonContent.StoreId,
StoreName: jsonContent.StoreName,
businessUnitId: element.id
});
});
});
};
我找不到正确的方式来引用商店中的元素,我想这样的事情不需要直接引用id字段
module.test_data_insertion = function() {
models.BusinessUnit.findOne({
where: {
BUID: "001"
}
}).then(element => {
fs.readdirSync(dir).forEach(function(file) {
var contents = fs.readFileSync(dir + file);
var jsonContent = JSON.parse(contents);
models.Store.create({
StoreId: jsonContent.StoreId,
StoreName: jsonContent.StoreName,
businessUnit: element
});
});
});
};
它应该很简单,但我看不到。谢谢
答案 0 :(得分:0)
假设您的关联设置正确,您正在寻找类似这样的内容:
module.test_data_insertion = function() {
models.BusinessUnit.findOne({
where: {
BUID: "001"
}
}).then(element => {
fs.readdirSync(dir).forEach(function(file) {
var contents = fs.readFileSync(dir + file);
var jsonContent = JSON.parse(contents);
element.setStore({
StoreId: jsonContent.StoreId,
StoreName: jsonContent.StoreName,
});
});
});
};
请从启用set
方法的文档中读取belongsTo,
不过,请注意,如果这是一对多关系(一个业务部门且商店很多),则可能需要切换到belongsToMany
,它具有add
方法。因为setStore会覆盖以前的set。
此外,由于它们是可以保证的,因此我不确定这些方法中的任何一种是否可以在.forEach
内正常工作,您可能需要切换到传统的for loop
。