我想用#34; await"
根据帆文件,我的行为如下:
https://sailsjs.com/documentation/reference/waterline-orm/models/create
create: function (req, res, next) {
var new_place = await Place.create({...}, function place_created(err, XX){
if(err && err.invalidAttributes) {
return res.json({'status':false, 'errors':err.Errors});
}
}).fetch();
if(new_place){
console.log(new_place);
res.json({'status':true,'result':new_place});
}
},
但是我得到以下错误:
var new_place = await Place.create({...}, function place_created(err, XX){
^^^^^
SyntaxError: await is only valid in async function
我该怎么做才能解决这个问题。
答案 0 :(得分:7)
SyntaxError:await仅在异步函数
中有效
这是因为您在非await
async
请记住, await关键字仅在异步函数中有效。如果你在异步函数体之外使用它,你将得到一个SyntaxError。
您需要使函数async
才能正常工作。在代码中进行这些更改
'use strict';
create: async function(req, res, next) {
var new_place = await Place.create({ ... }, function place_created(err, XX) {
if (err && err.invalidAttributes) {
return res.json({ 'status': false, 'errors': err.Errors });
}
}).fetch();
if (new_place) {
console.log(new_place);
res.json({ 'status': true, 'result': new_place });
}
},
答案 1 :(得分:1)
我认为你应该让你的函数异步。
async(function(){
var new_place = await Place.create({...})
})();
如果您正在使用等待,则不应使用回调。您应按照here
所述管理响应Also you can check this guide of how to manage async in sail.js