node.js - 无法理解猫鼬中的连接
问题描述
我用来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
谁能为我解释一下?以上两段代码有什么不同,非常感谢。
解决方案
mongoose.connect()
只建立一个到数据库的连接并返回一个承诺。Mongoose 会在您调用时创建默认数据库连接mongoose.connect()
,您可以使用mongoose.connection
. 现在您可以使用错误/打开等事件检查此连接的状态。
您的第二段代码不起作用,因为mongoose.connect()
返回承诺不是数据库连接对象。您正在尝试访问不存在的连接属性,因此抛出错误未定义属性错误。
db.connection.on("error", function (error) {
^
TypeError: Cannot read property 'on' of undefined
希望对你有帮助 :)
.
推荐阅读
- python - 我试图制作一个打印素数的代码,但它会吐出诸如 27 和 35 之类的数字
- javascript - Firebase .set() 与合并选项错误第二个参数必须是有效的函数
- javascript - Flask-SocketIO 发出错误请求
- android - Android Studio XML 预览未显示
- ruby-on-rails - 为嵌套关联呈现的 html 标记未包含在 field_with_errors div 中
- javascript - 在一个循环中组合来自 2 个数组的 2 个对象?
- c++ - 如何使用 C++ 静态类方法创建 C 样式回调
- php - 如何将数组与变量值合并
- html - Bootstrap col-auto 超出行大小
- pandas - 如何计算同一列的两个值的差异并使用结果添加新列