修补命令地 NPM 应用程序。它只有 12 行,我被卡住了。 一旦我做出 promise ,应用程序就会继续运行,而不是让我再次输入命令行(当然直到 cmd+C)。自己不确定要用 google 找到什么答案,所以希望下面的代码就足够了!
#! /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 在退出程序之前不要等待该特定资源关闭。
因此,在您使用数据库连接的特定情况下,您可以:
- 调用
process.exit()
手动退出程序。 - 关闭数据库连接,这样 node.js 就没有什么可等待的了
- 在数据库套接字上调用
.unref()
告诉 node.js 不要等待这个资源。
仅供引用,这是一个非常相似的问题:mongoclient.connection does not return cursor back on command line
关于node.js - 如何在 nodejs 的 promise 中完成执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685860/