gpt4 book ai didi

javascript - Sequelizejs - 然后结果问题

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

我正在使用 NodeJS 和 Sequelize。我有以下问题:

阅读设置表:

    Settings.findOne({where: {
user_id: data
}})
.then(settings => {
// Next request
});

我需要将 settings.device(示例) 保存在 .then block 之外。但如果我这样做

var device;

Settings.findOne({where: {
user_id: data
}})
.then(settings => {
device = settings.device;
});

这不起作用。

已经是错误输出未定义

.then 结果 block 中的输出与 console.log(settings.device); 完美配合。

更新

我需要它,例如:

    var array = [];

// Get Settings from table
Settings.findOne({where: {
user_id: data
}})
.then(settings => {

// Get token from other Table
Example.findOne({where: {
user_id: data
}})
.then(example => {
// push to array
array.push({
"user_id" : data,
"device":settings.device, // output: settings.device is undefined
"token": example.token
});

});

});

// Send array to client

最佳答案

这实际上是一个如何处理 Promise 链中多个解析值的问题。您可以搜索它并看到很多关于如何处理它的好例子。例如,您可以在每个 then 处理程序中返回一个数组或对象,或者将值重新分配给更高范围的变量(就像您使用 settings 所做的那样)。我过去大量使用过这两种方法,而且生成的代码显然不优雅,而且写起来也不有趣。

但是,async/await 在 Node 中很容易使用,并且大大简化了您的代码:

const array = [];

// Get settings.
const settings = await Settings.findOne({where: {
user_id: data
}});

// Get token.
const example = await Example.findOne({where: {
user_id: data
}});

array.push({
user_id : data,
device: settings.device,
token: example.token
});

关于javascript - Sequelizejs - 然后结果问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55753094/

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