执行mongoose查询时出错

时间:2018-01-05 08:02:13

标签: node.js mongodb mongoose

我正在mongoose中执行查询,我需要在其中查找数据库中的所有用户并对其进行排序并将结果限制为10。 我的查询路线是:(路线为“/ 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

编辑1:

mongodb查询的输出: Output of my query

您可以看到我的_id是ObjectId类型。

2 个答案:

答案 0 :(得分:0)

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

{
    _id: "top",
    ...
}

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

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

答案 1 :(得分:0)

您遇到的问题是您的搜索路线正在通过findbyId。如果您确实想在不使用ID的情况下搜索/查找所有用户,则需要确保在您的控制器中,搜索位于getbyId之前。在您的路线中也是如此。我遇到了相同的错误here,通过将搜索功能放在getbyId之前,可以从路线中解决它。

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