为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决 Mongoose v5.11.0 model.find() 错误:

如何解决 Mongoose v5.11.0 model.find() 错误:

慕森王 2023-09-21 16:43:48
如何解决 model.find() 函数产生“缓冲在...毫秒后超时”的问题?我正在使用 mongoose v 5.11.0、npm v6.14.8 和 mongodb v这是代码。var express = require('express');var app = express();var bodyParser = require('body-parser');const assert = require('assert');var mongoose = require('mongoose');try {    var db = mongoose.connect('mongodb://localhost:27017', {useNewUrlParser: true, dbName: 'swag-shop' });    console.log('success connection');}catch (error) {    console.log('Error connection: ' + error);}var Product = require('./model/product');var WishList = require('./model/wishlist');//Allow all requests from all domains & localhostapp.all('/*', function(req, res, next) {  res.header("Access-Control-Allow-Origin", "*");  res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept");  res.header("Access-Control-Allow-Methods", "POST, GET");  next();});app.get('/product', function(request, response) {    Product.find({},function(err, products) {        if (err) {            response.status(500).send({error: "Could not fetch products. "+ err});        } else {            response.send(products);        }    });});app.listen(3004, function() {    console.log("Swag Shop API running on port 3004...");});产品型号:var mongoose = require('mongoose');var Schema = mongoose.Schema;var product = new Schema({    title: String,    price: Number,    likes: {type: Number, default: 0}});module.exports = mongoose.model('Product', product);
查看完整描述

6 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

根据此链接中找到的文档:https ://mongoosejs.com/docs/connections.html#buffering

Mongoose 让您可以立即开始使用模型,而无需等待 mongoose 建立与 MongoDB 的连接。

这是因为 mongoose 在内部缓冲模型函数调用。这种缓冲很方便,但也是造成混乱的常见原因。如果您在没有连接的情况下使用模型,Mongoose 默认情况下不会抛出任何错误。

长话短说:

在建立连接之前将调用您的模型。您需要将async/await与 connect() 或 createConnection() 一起使用;或使用.then(),因为这些函数现在从Mongoose 5返回 Promise 。


查看完整回答
反对 回复 2023-09-21
?
ITMISS

TA贡献1871条经验 获得超8个赞

通过删除文件夹、文件并重新安装模块解决了model.find() error: Operation products.find() buffering timed out after 10000ms"该问题。node_module*.jsonmongoose

按照此说明解决了警告问题https://mongoosejs.com/docs/deprecations.html


查看完整回答
反对 回复 2023-09-21
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

嗯,我遇到了同样的问题并且有非常相似的代码。我在测试时发送 get 请求时遇到了同样的错误。

最终,我找到了解决方案,即我的本地主机数据库当时没有运行。虽然这是一个愚蠢的错误,但我很难找到它。


查看完整回答
反对 回复 2023-09-21
?
慕妹3242003

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;

        }

    });


查看完整回答
反对 回复 2023-09-21
?
aluckdog

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");

    })


查看完整回答
反对 回复 2023-09-21
?
弑天下

TA贡献1818条经验 获得超7个赞

出现此错误是因为您在创建与数据库的连接之前尝试访问模型

始终在 app.js 中链接您的 mongodbconnection 文件(如果您已创建)

 var mongoose = require('./mongoconnection');

或者只是将 mongodb 连接代码保留在 app.js 中


查看完整回答
反对 回复 2023-09-21
  • 6 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信