gpt4 book ai didi

javascript - Node.js Sequelize 在多个模型的循环中使用 create 函数

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

这让我发疯,我花了好几个小时拔头发 - 经典。我正在从 API 端点接收数据。我正在遍历数据并需要在多个表中创建多个记录,并且需要使用第一个创建的记录的最后插入的 id。但我没有得到正确的结果:

请求代码:

request(options, (err, res, body) => {
if (err) { return console.log(err); }

for (var i = 0; i < body.length; i++) {

var contact = {
name: body[i].person.first_name + " " + body[i].person.last_name
};
var article = {
name: body[i].article.name,
author: null // want this to be last inserted id of contact, after it's saved.
};

var note = {
text: body[i].person.first_name+" wrote an article.",
contactId: null // want this to be last inserted id of contact, after it's saved.
};

Contact.create(contact).then(function (result) {
console.log(result.id);
note.contactId = result.id;
article.author = result.id;
Article.create(article).then();
Note.create(note.then();

});
}
}

结果是联系人得到保存,但其余部分没有保存。我的 JS 代码不是很好,所以我认为我遇到了异步问题或者可能缺乏技能,但是我四处搜索并没有找到创建循环模型的示例。

请你能帮我回到正确的道路上吗?

最佳答案

你应该使用 bluebird 和 chain 然后 promise 。

const Promise = require('bluebird');

request(options, (err, res, body) => {
if (err) {
return console.log(err);
}

return Promise.each(body, (item) => {
const contact = {
name: `${item.person.first_name} ${item.person.last_name}`,
};
const article = {
name: item.article.name,
author: null,
};
const note = {
text: `${item.person.first_name} wrote an article.`,
contactId: null,
};

return Contact.create(contact)
.then( (result) => {
console.log(result.id);
note.contactId = result.id;
article.author = result.id;
})
.then(() => Article.create(article))
.then(() => Note.create(note));
})
};

或异步/等待
const Promise = require('bluebird');

request(options, (err, res, body) => {
if (err) {
return console.log(err);
}

return Promise.each(body, async (item) => {
const result = await Contact.create(contact = {
name: `${item.person.first_name} ${item.person.last_name}`,
});

await Article.create({
name: item.article.name,
author: result.id,
});

await Note.create({
text: `${item.person.first_name} wrote an article.`,
contactId: result.id,
});
})
};

祝你好运!

关于javascript - Node.js Sequelize 在多个模型的循环中使用 create 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52345981/

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