SyntaxError:节点中的意外标识符

我尝试从mongodb数据库获取数据使用nodejs和mongorito orm为mongodb数据库,但它显示我下面的错误

kaushik@root:~/NodeJS/application$ node run.js /home/kaushik/NodeJS/run.js:16 var posts = yield Users.all(); ^^^^^ SyntaxError: Unexpected identifier at createScript (vm.js:53:10) at Object.runInThisContext (vm.js:95:10) 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:423:7) at startup (bootstrap_node.js:147:9) kaushik@root:~/NodeJS/application$ 

这里是run.js

 var Mongorito = require('mongorito') var Model = Mongorito.Model var Users = Model.extend({ collection: 'testing'// collection name }); var posts = yield Users.all(); console.log(posts) 

我也尝试'使用严格',但它给以下错误

 SyntaxError: Unexpected strict mode reserved word 

Mongorito不使用生成器(这已经不是了 ),这意味着你不能使用yield (即使如此,你得到的错误是因为yield生成器函数中有效,但是你使用它在你的顶层码)。 它现在使用承诺。

如果您愿意使用Node v7(或Babel等转译器),则可以使用async/await 。 你的代码看起来像这样:

 const Mongorito = require('mongorito'); const Model = Mongorito.Model; const Users = Model.extend({ collection: 'test' }); void async function() { await Mongorito.connect('localhost/test'); let posts = await Users.all(); console.log(posts) await Mongorito.disconnect(); }(); 

因为await只能在async函数中工作,所以上面的代码使用asynchronousIIFE来包装代码。

对于旧版本的Node,您还可以使用常规的承诺链:

 Mongorito.connect('localhost/test').then(() => { return Users.all(); }).then(posts => { console.log(posts); }).then(() => { return Mongorito.disconnect(); });