gpt4 book ai didi

node.js - 创建 Sequelize 关系/关联

转载 作者:行者123 更新时间:2023-12-03 22:42:28 25 4
gpt4 key购买 nike

我创建了以下表格:

user TABLE [id, name, email, dob, zipcode, created_on]
results TABLE [id, assessment_id, q_id, response, created_on]

接下来在我的数据库中,我在结果 => 评估 ID 和评估 => id 之间创建了一个外键关联

在我的代码中,我创建了包含我想要保存的所有信息的对象,它看起来像这样:
results = {
name: 'bruce',
email: 'kldf@sdklj.com',
dob: 10/24/84,
zipcode: '55555',
responses: {
{
qId: 'S1Q01',
response: 2
}, {
qId: 'S1Q02',
response: 0
}
}
}

我的模型定义:

评估模型
module.exports = function(sequelize, DataTypes){
var assessment = sequelize.define('assessments', {
name: DataTypes.STRING,
email: DataTypes.STRING,
dob: DataTypes.DATE,
zipcode: DataTypes.INTEGER,
created_on: DataTypes.DATE
});

return assessment;
};

结果模型
module.exports = function(sequelize, DataTypes){
var results = sequelize.define('results', {
assessmentId: DataTypes.INTEGER,
qId: DataTypes.STRING,
response: DataTypes.STRING,
created_on: DataTypes.DATE
});

return results;
};

模型索引
var Sequelize = require('sequelize'); 
var models = [
'Assessment',
'Result'
];


models.forEach(function(model) {
module.exports[model] = sequelize.import(__dirname + '/' + model);
});

(function(m) {
m.Assessment.hasMany(m.Result);
})(module.exports);

module.exports.sequelize = sequelize;

好的,根据我能找到的有限文档,我认为所有这些都是正确的。

最后在我的服务器上,我尝试接受 POST 请求并将结果保存在数据库中,但是只保存了评估模型,结果模型被删除。
router.post('/assessment', function(req, res) {
var response;
var assessment = Assessment.create({
name: req.body.name,
email: req.body.email,
dob: req.body.dob,
zipcode: req.body.zipcode,
created_on: new Date()
})
.then(function(res) {
return function() {
for(i=0; i<req.body.responses.length; i++) {
response.build({
qId: req.body.responses[i].id,
response: req.body.responses[i].response,
created_on: new Date()
});
assessment.setResults(response);
}
res.send(200);
}
})

我错过了什么?我找不到有关如何实际保留关联表数据的任何文档,只有有关如何获取关联表数据的文档。

最佳答案

我怀疑这不是建立这种关系的正确方法,但我发现如果我手动设置外键值它工作正常。

router.post('/assessment', function(req, res) {
var assessment = Assessment.create({
name: req.body.name,
email: req.body.email,
dob: req.body.dob,
zipcode: req.body.zipcode,
created_on: new Date()
})
.then(function(sourceData) {
for(var i = 0; i < req.body.responses.length; i++) {
var response = req.body.responses[i];
var responseObj = Response.build({
assessmentId: sourceData.dataValues.id,
qId: response.id,
response: response.response,
created_on: new Date()
});
responseObj
.save()
.then(function() {
if(i === req.body.responses.length) {
res.send(200);
return;
}
})
.catch(function(err) {
res.send(500, { error: err });
return;
});
}
});

如果有人知道不需要我手动设置外键值的更好方法,请告诉我。

关于node.js - 创建 Sequelize 关系/关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33641351/

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