Node.js 代码未终止
我在代码和mongodb中使用了twitter API。正在数据库中反映正确的输出,但没有终止。我猜问题出在db.server.find{id:myid},cb;下面代码中的语句。然而,我不知道如何解决这个问题Node.js 代码未终止,node.js,mongodb,mongojs,Node.js,Mongodb,Mongojs,我在代码和mongodb中使用了twitter API。正在数据库中反映正确的输出,但没有终止。我猜问题出在db.server.find{id:myid},cb;下面代码中的语句。然而,我不知道如何解决这个问题 var Twit = require('../lib/twitter'), conf = require('../config1'); var myid; var twit = new Twit(conf); var databaseUrl = "mydb2"; // "user
var Twit = require('../lib/twitter'),
conf = require('../config1');
var myid;
var twit = new Twit(conf);
var databaseUrl = "mydb2"; // "username:password@example.com/mydb"
var collections = ["server", "followers"];
var db = require("mongojs").connect(databaseUrl, collections);
twit.get('account/verify_credentials', function (err, reply) {
myid = reply.id;
function addToServer(myid, cb) {
db.server.find({
id: myid
}, cb);
};
addToServer(myid, function (err, resp) {
if (err) {
console.log("err");
} else if (resp.length > 0) {
console.log("My Id present in server present");
} else {
console.log("New to the app.So updating server ");
db.server.insert({
id: myid
});
db.followers.insert({
id: myid,
following: []
})
}
});
});
这是我代码的一部分,我也使用了process.exit0函数,但仍然没有帮助。我认为您的问题与此相关: 这是一个例子。如果我调用db.close,程序就存在,如果我没有,它就不存在。所以,在“退出”时,进程不能被称为正确的位置 但问题是,您有一个到数据库的持久tcp连接,只要该连接在运行,脚本就不会关闭 这是一个运行一次的脚本,还是需要让它继续运行 编辑:
由于脚本只需运行一次,因此我将对您的2个数据库查询使用回调,并在最后一次回调中关闭数据库。是否需要显式关闭与数据库的连接?看起来mongojs在后台使用了mongodb模块,在后者的示例中,有显式调用来关闭连接。我尝试了的db.close清理函数,process.on'exit',cleanup.on,但没有帮助。如果您将twit.get中的所有内容都删除到最后,它仍然挂起吗?@junapaco:没有,只是在对它得到的每个db查询进行注释后终止。没有,我只需要运行一次。这是完整的代码:。你能帮我查一下这个密码吗。。。是的,有了这样的结构,知道把db.close放在哪里会很困难。基本上,您只需要确定何时运行完查询,然后在最后一次回调中关闭db连接。这是有用的。