如何在nodejs的承诺中完成执行?

修改命令土地NPM应用程序。 这只有12行,我卡住了。 一旦进入我的承诺,应用程序继续运行,而不是让我再次键入命令行(直到cmd + C当然)。 不知道如何谷歌find自己的答案,所以希望下面的代码是足够的!

#! /usr/bin/env node var MongoClient = require('mongodb').MongoClient; var dbUrl = 'mongodb://localhost:27017/building'; console.log(process.argv); MongoClient.connect(dbUrl) .then(function(db){ console.log('connected to db!'); // I guess there is some command to run here? // Promise resolution of sorts? return; }); 

在node.js中,如果定时器仍在运行,服务器仍在运行或套接字仍然打开,则进程将继续自行运行。

您可以随时使用process.exit()手动退出程序,即使上述某些项仍在运行/打开。

或者,您可以使用unref()以上三项中的任何一项来指示node.js在退出程序之前不要等待该特定资源被closures。

所以,在你的数据库连接的具体情况下,你可以:

  1. 调用process.exit()手动退出程序。
  2. closures数据库连接,以便node.js不会有任何东西等待
  3. 调用DB套接字上的.unref()来告诉node.js不要等待这个资源。

仅供参考,这是一个非常类似的问题: mongoclient.connection不会返回光标回到命令行

节点将继续运行,直到你明确断开mongodb。 为此,调用db.close()