我正在使用sails 1.0在nodejs中工作。我正在尝试使用async / await创建记录,但无法正常工作。
在下面的代码中,等待调用后立即执行下一行。我的要求是,它应该等到获取数据后再取决于sesondata下一个函数的发生。
请帮助我,在此先感谢...
controller.js
create: async function(req, res) {
let msg = req.body;
let sesondata = await DeviceHelpers.create(receievedMessage);
if(sesondata) {
console.log(sesondata);
}
}
DeviceHeper.js
create: function(receievedMessage){
User.create(receievedMessage,(err, data)=> {
if (err) {
return(err);
} else {
return (data);
}
}, { fetch: true });
},
看起来您在生活中从未正确地编写过async / await。 (:
至少您会知道异步/等待是对诺言的语法糖,您可以将DeviceHelper.js
中的代码包装到Promise中:
create: function(receievedMessage){
return new Promise((resolve, reject) => {
User.create(
receievedMessage,
(err, result)=> {
if (err) return reject(error);
resolve(result);
},
{fetch: true}
);
});
},
或者如果您愿意read official manual,您可以在其中看到示例:
var createdRecord = await Something.create(initialValues).fetch();
所以您在DeviceHelper.js
中的代码变得更短:
create: async function(receievedMessage) {
const result = await User.create(receievedMessage).fetch();
return result;
},
或:
create: async function(receievedMessage) {
return await User.create(receievedMessage).fetch();
},
OR:
create: function(receievedMessage) {
return User.create(receievedMessage).fetch();
},
P.S。您写道:
我正在使用Sails 1.0在nodejs中工作。我正在尝试使用async / await创建记录,但无法正常工作。
在repository中可以阅读:
从1.0版开始,Sails支持开箱即用。这将嵌套回调(以及相应的错误处理)替换为简单,熟悉的用法。