无法理解猫鼬中的连接

时间:2018-08-22 06:07:13

标签: node.js mongodb mongoose

我使用mongoose连接mongodb中的nodejs

const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/testdb", {useNewUrlParser: true});
let db = mongoose.connection;
db.on("error", function (error) {
    console.log("fail--->" + error);
});
db.on("open", function () {
    console.log("connected");
});

这很好用,我找到了另一种方法,将上面的代码更改为

const mongoose = require("mongoose");
let db = mongoose.connect("mongodb://127.0.0.1:27017/testdb", { useNewUrlParser: true });
db.connection.on("error", function (error) {
    console.log("fail--->" + error);
});
db.connection.on("open", function () {
    console.log("connected");
});

但这会引发错误

db.connection.on("error", function (error) {
          ^
TypeError: Cannot read property 'on' of undefined

有人可以为我解释吗?上面的两个代码有什么不同,非常感谢。

1 个答案:

答案 0 :(得分:1)

mongoose.connect()仅建立与数据库的连接并返回承诺。当您调用mongoose.connect()时,Mongoose将创建默认的数据库连接,您可以使用mongoose.connection访问此默认连接。现在,您可以使用错误/打开等事件来检查此连接的状态。

您的第二段代码不起作用,因为mongoose.connect()返回的不是数据库连接对象的Promise。您正在尝试访问不存在的 connection 属性,因此会引发错误未定义的属性错误。

db.connection.on("error", function (error) {
          ^
TypeError: Cannot read property 'on' of undefined

希望这会对您有所帮助:)