Node.js 是否将Sequelize查询中的数据保存为变量中的普通JavaScript对象?
我正在编写一个节点API,希望将Sequelize查询的结果保存在变量中,作为Node.js 是否将Sequelize查询中的数据保存为变量中的普通JavaScript对象?,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,我正在编写一个节点API,希望将Sequelize查询的结果保存在变量中,作为findAll块之外的普通JavaScript对象。我有一些有用的东西,但没有我想要的那么好。以下是我所拥有的: router.get('/', (req, res, next) => { models.User.findAll({ attributes: ['id', 'name'], raw: true }).then(function (results) {
findAll
块之外的普通JavaScript对象。我有一些有用的东西,但没有我想要的那么好。以下是我所拥有的:
router.get('/', (req, res, next) => {
models.User.findAll({
attributes: ['id', 'name'],
raw: true
}).then(function (results) {
console.log(results); // Plain JavaScript object, which is good
// Do logic on results
//Return results
res.status(200).json({
results
});
});
});
但是我真的不想将所有逻辑都保留在then()
块中,特别是因为我可能想在这之前或之后执行一些其他查询。我真的想要这样的东西(如果这是一件事):
我试图将sequelize查询保存在
router.get()
调用下面的函数中,并在结果是JavaScript对象时返回结果,但没有成功。我对JavaScript非常陌生,所以我非常感谢您的建议 那么,如果您不希望逻辑代码出现在then
块中,那么您最好使用异步等待
:
router.get('/', async (req, res, next) => {
var results = await models.User.findAll({
attributes: ['id', 'name'],
raw: true
});
// you've result variable available here, use it.
// Do logic on results
// return results
res.status(200).json({
results
});
});
现在,您不必在
中编写代码,然后在块中,您可以直接在函数中使用变量results
。我的朋友非常简单,可以在检索数据的同一位置对结果进行逻辑处理,例如在我修改的代码中:
router.get('/', (req, res, next) => {
var users = models.User.findAll({
attributes: ['id', 'name'],
raw: true
}).then((results) => {
//here do you logic with results
//after
res.status(200).json({data : result});
}).catch(error => res.status(400).json({error}));
});
你可以使用async-await.Wow,太棒了!谢谢很乐意帮助配偶:))
router.get('/', (req, res, next) => {
var users = models.User.findAll({
attributes: ['id', 'name'],
raw: true
}).then((results) => {
//here do you logic with results
//after
res.status(200).json({data : result});
}).catch(error => res.status(400).json({error}));
});