我在我的代码和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"; // "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: []
})
}
});
});
P.S:这是我的代码的一部分,我也使用了process.exit(0)
函数,但仍然没有帮助。
答案 0 :(得分:0)
我认为您的问题与此相关:https://github.com/mafintosh/mongojs/issues/15。
这是一个gist。如果我调用db.close()
程序存在,如果不存在,则不会。所以process.on('exit')
一定不是正确的地方。
但问题是你有一个持久的tcp连接对数据库开放,只要它正在运行,脚本就不会关闭。
这是一个一次性运行的脚本,还是你需要让这个东西继续运行?
编辑:
由于脚本只需要运行一次,我会在2次数据库查询中使用回调,并在最后一次回调中关闭数据库。