6 回答
TA贡献1942条经验 获得超3个赞
根据此链接中找到的文档:https ://mongoosejs.com/docs/connections.html#buffering
Mongoose 让您可以立即开始使用模型,而无需等待 mongoose 建立与 MongoDB 的连接。
这是因为 mongoose 在内部缓冲模型函数调用。这种缓冲很方便,但也是造成混乱的常见原因。如果您在没有连接的情况下使用模型,Mongoose 默认情况下不会抛出任何错误。
长话短说:
在建立连接之前将调用您的模型。您需要将async/await与 connect() 或 createConnection() 一起使用;或使用.then(),因为这些函数现在从Mongoose 5返回 Promise 。
TA贡献1871条经验 获得超8个赞
通过删除文件夹、文件并重新安装模块解决了model.find() error: Operation products.find() buffering timed out after 10000ms"
该问题。node_module
*.json
mongoose
按照此说明解决了警告问题https://mongoosejs.com/docs/deprecations.html
TA贡献1906条经验 获得超3个赞
嗯,我遇到了同样的问题并且有非常相似的代码。我在测试时发送 get 请求时遇到了同样的错误。
最终,我找到了解决方案,即我的本地主机数据库当时没有运行。虽然这是一个愚蠢的错误,但我很难找到它。
TA贡献1824条经验 获得超6个赞
对我来说是 100% MongoDB Atlas 问题。我在圣保罗创建了一个集群,但由于某种原因未能按预期工作。我已将其删除,并在 AWS/弗吉尼亚北部 (us-east-1) 创建一个新的,然后一切又开始工作。
我正在使用这个函数连接到数据库并避免一些警告
mongoose.connect(
url,
{ useNewUrlParser: true, useUnifiedTopology: true },
function (err, res) {
try {
console.log('Connected to Database');
} catch (err) {
throw err;
}
});
TA贡献1847条经验 获得超7个赞
只需使用127.0.0.1而不是localhost
mongoose.connect('mongodb://127.0.0.1:27017/myapp');
或者在 mongoose.connect 方法中使用 family:4
mongoose.connect('mongodb://localhost:27017/TESTdb', {
family:4
})
.then(() => {
console.log('FINE');
})
.catch(() => {
console.log("BAD");
})
TA贡献1818条经验 获得超8个赞
出现此错误是因为您在创建与数据库的连接之前尝试访问模型
始终在 app.js 中链接您的 mongodbconnection 文件(如果您已创建)
var mongoose = require('./mongoconnection');
或者只是将 mongodb 连接代码保留在 app.js 中
添加回答
举报