SyntaxError:异步功能中出现了意外的令牌功能吗?

时间:2018-11-27 17:45:23

标签: node.js mongoose async-await

大家好,我是Nodejs和mongoose的初学者。我试图插入和检索mongoose中的数据。我正在使用 async await 函数一个接一个地执行(顺序) )。有人可以帮助我吗?预先感谢...。

即:我想执行(异步等待)概念(序列步骤)

1。连接数据库

2。创建用户

3。查找用户。

我遇到了错误:

async function calltaskone(){
      ^^^^^^^^
SyntaxError: Unexpected token function
    at Object.exports.runInThisContext (vm.js:78:16)
    at Module._compile (module.js:543:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.runMain (module.js:605:10)
    at run (bootstrap_node.js:420:7)
    at startup (bootstrap_node.js:139:9)
    at bootstrap_node.js:535:3
    
    
    Code for your reference:
    
    
    'use strict';

const mongoose=require('mongoose');


const calldbconnect=()=>{
    return new Promise((resolve,reject)=>{
        if(true){
            mongoose.connect('mongodb://vdsd:vdwdwh12dw3,@ds11dwdw.mlab.com:1w5664/vorganisation',{useNewUrlParser:true},(err,db)=>{
                if(err){
                    console.log(err);
                    reject('Db is not connected');
                }
                else{
                    resolve('Db is connected');
                }
            });
        }
    });
}

const schemadesign=new mongoose.Schema({
    clientName:String,
    clientId:Number,
    clientAddress:String
});


const modeldata=mongoose.model('clientInfo',schemadesign);

const data=[{
    clientName:'VIGNESH Mack',
    clientId:4128,
    clientAddress:'UK'
},{
    clientName:'VIGNESH Tokyo',
    clientId:4988,
    clientAddress:'USA'
}];

function calldatasave(){

    return new Promise((resolve,reject)=>{

        modeldata.create(data,(err,a,b)=>{
            if(err){
                reject(`Error occured while data saved ${err}`);
            }
            else{
                resolve('Data saved successfully');
            }
        });
           
    });
}

const calldatafind=()=>{

    return new Promise((resolve,reject)=>{

        if(true){
            console.log('try to find');
            modeldata.find({'clientId':4988},(err,data)=>{
                if(err){
                    reject(`Error occured while find data: ${err}`)
                }
                else{
                    console.log(data);
                    resolve('Data found');
                }
            });
        }  
    });
}

async function calltaskone(){

    const a=await calldbconnect();
    console.log(a);
    const b=await calldatasave();
    console.log(b);
    const c=await calldatafind();
    console.log(c);

}

calltaskone();

1 个答案:

答案 0 :(得分:2)

我相信您正在使用旧版本的Node。低于7.6版的Node版本不支持异步功能。您可以检查here

如果要使用异步/等待,则需要使用Babel进行节点版本转换。

编辑:

正如您说的那样,您正在使用v7.3,可以使用--harmony标志(从v7.0到v7.5)启用实验性功能。要了解有关该标志的更多信息,请查看以下内容:What does `node --harmony` do?