gpt4 book ai didi

mysql - (async) 使用 sequelize 和 node 在 mysql 数据库中创建多个寄存器

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

你好美丽的社区!
我正在尝试在表中写入多个字段,但我遇到了同步问题,有下一个输出:

<!> T A B L E  |1|  C R E A T E D <!>
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);

<!> T A B L E |2| C R E A T E D <!>
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);

<!> T A B L E |3| C R E A T E D <!>
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);
当我应该为每个创建的表获取下一个输出时:
<!> T A B L E  |x|  C R E A T E D <!>
Executing (default): INSERT INTO `Programacion` (`id`,`dia`,`sucursal_id`,`torta_id`,`tamano_id`,`cantidad`,`estado`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?,?);

用户提交一个 Json 文件,我必须将其转换为包含 52 个字段的数组,以便我可以将其写入我的数据库,生成的 52 个对象按如下方式发送:
tables.forEach((table) => {
programacionServices.programacionCreate(table)
.then(r => {
console.log(`\n<!> T A B L E |${_id}| C R E A T E D <!>`)
_id = _id + 1;
})
.catch(e => reject(e))
})
programacionServices.programacionCreate:
class ProgramacionServices{
programacionCreate(body){
return new Promise((resolve, reject) => {
Programacion.create(body)
.then(r => resolve(r))
.catch(e => reject(e));
});
}
}

我正在尝试使用嵌套 promise ,在我的函数中使用 async/await,我还使用了 setTimeout、setInterval 和 clearInterval 来测试它中断的点,但控制台中的输出总是相同的,只有前四个字段被保存。
提前致谢!
编辑
我尝试过 bluebird 包,但没有用:
resolve(Promise.each(tables, (table) => {
return programacionServices.programacionCreate(table)
.then(r => {
console.log('inserted');
})
.catch(e => reject(e))
}).then(r => console.log('done')));

最佳答案

如果在 Programacion 类中用作 Programacion.createProgramacionServices 是 sequelize 模型的实例,则不需要用另一个 Promise 包装它。你不需要这个:

programacionCreate(body){
return new Promise((resolve, reject) => {
Programacion.create(body)
.then(r => resolve(r))
.catch(e => reject(e));
});
}
删除 .create 周围的 promise 并使其成为异步功能。
async programacionCreate(body){
Programacion.create(body);
}
然后对于您的 tables 数组,您可以编写如下内容:
for (const table of tables) {
await programacionServices.programacionCreate(table);

console.log(`\n<!> T A B L E |${_id}| C R E A T E D <!>`);

_id = _id + 1;
}

关于mysql - (async) 使用 sequelize 和 node 在 mysql 数据库中创建多个寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62925389/

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