gpt4 book ai didi

node.js - 为什么这个 MongoDB 连接在 grunt 脚本中不起作用?

转载 作者:可可西里 更新时间:2023-11-01 10:32:33 25 4
gpt4 key购买 nike

如果我使用 Node 运行它,它会打印“已连接到数据库”:

var MongoClient = require("mongodb").MongoClient;
MongoClient.connect("mongodb://localhost/db1", function(err, db) {
if (err) {
throw err;
}
console.log("Connected to Database");
db.close();
});

但是,如果我尝试使用 Grunt 任务运行它,它什么也不做,而且是静默的。

module.exports = function(grunt) {
return grunt.registerTask("task", "subtask", function() {
var MongoClient = require("mongodb").MongoClient;
return MongoClient.connect("mongodb://localhost/db1", function(err, db) {
if (err) {
throw err;
}
console.log("Connected to Database");
db.close();
});
});
};

谁能告诉我为什么会这样,或许可以提供解决方法?

最佳答案

一切正常。

数据库连接是异步的,因此在连接建立之前咕噜声“杀死”你的任务。

你的任务应该是这样的:

module.exports = function(grunt) {
return grunt.registerTask("task", "subtask", function() {
var done = this.async();
var MongoClient = require("mongodb").MongoClient;
MongoClient.connect("mongodb://localhost/db1", function(err, db) {
if (err) {
done(false);
}
console.log("Connected to Database");
db.close();
done();
});
});
};

grunt 文档中有一整节是关于这个的:Why doesn't my asynchronous task complete?

关于node.js - 为什么这个 MongoDB 连接在 grunt 脚本中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19912515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com