如何在nodejs中的promise中完成执行?

时间:2016-01-08 20:52:36

标签: node.js mongodb npm

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

#! /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;
});

2 个答案:

答案 0 :(得分:3)

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

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

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

因此,在您使用数据库连接的特定情况下,您可以:

  1. 致电process.exit()以手动退出该计划。
  2. 关闭数据库连接,以便node.js无法等待
  3. 在数据库套接字上调用.unref()告诉node.js不要等待此资源。
  4. 仅供参考,这是一个非常相似的问题:mongoclient.connection does not return cursor back on command line

答案 1 :(得分:1)

节点将继续运行,直到您明确断开与mongodb的连接。为此,请致电db.close()