gpt4 book ai didi

当超过 100 个结果时,Node.js + mongoose find 卡住 Node

转载 作者:可可西里 更新时间:2023-11-01 09:35:26 26 4
gpt4 key购买 nike

我有一个简单的 mongoose 模型,我在该模型上调用 find,最大限制为 100,它调用 done 回调:

this.find({}).limit(100).exec(done);

如果我将此行修改为(或任何更高的数字),则永远不会调用回调

this.find({}).limit(101).exec(done);

任何地方都没有错误,数据库继续工作,但是这个 Node 应用程序卡住,必须重新启动。

如果我通过 ssh 进入服务器以连接到同一个数据库并连接到 mongo shell,在同一个集合上,find({}) 会在不到一秒的时间内返回所有约 700 个集合。当我将同一个数据库克隆到我的本地 PC 并运行该应用程序以连接到本地数据库时,它工作正常,但如果它连接到同一服务器上的数据库,该应用程序会在服务器上卡住。

知道如何调试这个吗?

Edit1:添加模型文件:

模型文件:

'use strict';

let mongoose = require('mongoose');
let Schema = mongoose.Schema;

let foodSchema = new Schema(
{
name: Object,
type: String,
description: Object,
price: Number,
priceBig: Number,
active: Boolean
},
{
collection: 'foods'
}
);

let model = mongoose.model('food', foodSchema);

model.getAllFoods = function (done) {
this.find({}, done);
};

model.getActiveFoods = function (done) {
this.find({active: true}, done);
};

model.getFoodById = function (id, done) {
this.findOne({_id: id}, done);
};

module.exports = model;

用法:

foodModel.getAllFoods(function (err, docs) {
if (err) {
res.sendStatus(500);
return;
}

res.send(docs);
});

getActiveFoods 工作正常(返回 96 个文档)

最佳答案

根据 JohnnyK 的提示,我将 Mongoose 从 4.1.11 更新到 4.3.7 并解决了这个问题。

关于当超过 100 个结果时,Node.js + mongoose find 卡住 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35092234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com