首页 > 解决方案 > 无法理解猫鼬中的连接

问题描述

我用来mongoose连接mongodbnodejs

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

谁能为我解释一下?以上两段代码有什么不同,非常感谢。

标签: node.jsmongodbmongoose

解决方案


mongoose.connect()只建立一个到数据库的连接并返回一个承诺。Mongoose 会在您调用时创建默认数据库连接mongoose.connect(),您可以使用mongoose.connection. 现在您可以使用错误/打开等事件检查此连接的状态。

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

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

希望对你有帮助 :)

.


推荐阅读