首页 文章

执行mongoose查询时出错

提问于
浏览
-1

我在mongoose中执行一个查询,我需要找到我的数据库中的所有用户并对它们进行排序并将结果限制为10.我的查询路由是: (the route is "/user/top")

router.get('/top', middleware.ensureAuthenticated, function (req, res) {
User.find({}).sort({bestScore: 1}).limit(10).exec(function (err, result) {
    if(err){
        res.json({
            status:"error",
            data:err
        });
    }
    else {
        res.json({
            status:"ok",
            data: result
        })
    }
})
});

我的用户型号:

var UserSchema = new mongoose.Schema({
image: String,
displayName: String,
bestScore:Number,
});

我从邮递员那里调用网址的错误
Erro Image

EDIT 1:

mongodb查询的输出:
Output of my query

你可以看到我的_id是ObjectId类型 .

2 回答

  • 0

    您的数据可能包含如下所示的文档:

    {
        _id: "top",
        ...
    }
    

    由于Mongoose默认希望该值为ObjectId,因此会出现此错误 . 您可以做的是将 _id 字段显式地映射为 string

    var UserSchema = new mongoose.Schema({
        _id: String,
        image: String,
        displayName: String,
        bestScore:Number,
    });
    
  • 0

    您遇到的问题是您的搜索路径正在通过findbyId . 如果你真的想在不使用Id的情况下搜索/查找所有用户,你需要确保在你的控制器中,你的搜索在你的getbyId之前 . 你的路线也一样 . 我有同样的错误here,我能够通过在getbyId之前设置我的搜索功能从我的路线解决它 .

    此外,当您使用邮递员时,请输入搜索参数,如下面我自己的案例研究中所示;记下路径和我的参数键和值:

相关问题