如何在创建新记录时在风帆中使用"等待"

mas*_* cm 2 node.js sails.js

我想用"等待"

根据sails文档,我的行为如下: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});
 }
},  
Run Code Online (Sandbox Code Playgroud)

但是我得到以下错误:

var new_place = await Place.create({...}, function place_created(err, XX){
                ^^^^^
SyntaxError: await is only valid in async function  
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题.

Sri*_*har 8

SyntaxError:await仅在异步函数中有效

这是因为您正在使用await不是的函数async

请记住,await关键字仅在异步函数内有效.如果在异步函数体外使用它,则会出现SyntaxError.

MDN异步功能

您需要使其功能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 });
        }
    },
Run Code Online (Sandbox Code Playgroud)