【问题标题】:Mongoose find does not return results mongo doesMongoose find 不返回结果 mongo 确实
【发布时间】:2019-01-14 10:21:00
【问题描述】:

我有一个名为 getTeamEmployees 的方法,它应该获取 teamId 等于方法参数 teamId 的员工。它看起来像这样:

public getTeamEmployees(teamId: number): Promise<any> {
    return MDBDatabaseController.EmployeeModel.find({ teamId: teamId }).exec();
}

我已经启用了 mongoose 调试,并且在控制台中我可以看到 mongoose 执行了什么查询。这是查询:

employees.find({ teamId: 13 }, { fields: {} })

如果我使用 mongo shell 执行此操作,我会得到:

    db.employees.find({ teamId: 13 }, { fields: {} })
Error: error: {
    "ok" : 0,
    "errmsg" : ">1 field in obj: {}",
    "code" : 2,
    "codeName" : "BadValue"
}

如果我在没有 { fields: {} } 部分的情况下执行它,一切都很好。它给了我 5 个结果。

我正在使用带有 typescript 的猫鼬,我的模型是这样实例化的:

MDBDatabaseController.EmployeeModel = model<IEmployee>('Employee', EmployeeSchema.schema);

其中 IEmployee 是一个扩展 mongoose.Document 的接口,并有一个名为 teamId 的字段,其类型为 Number大写N。

EmployeeSchema 是一个类,它有一个名为“schema”的静态属性,它等于 mongoose.Schema 的一个新实例,该实例有一个名为 teamId 的属性数字类型的

可能是什么问题?

【问题讨论】:

  • 看起来 find 方法在 find 查询中添加了 { fields: {} } 。值得检查您正在使用的猫鼬版本。还可以尝试使用简单的模型类而不是静态属性来完成。然后你就会知道罪魁祸首

标签: node.js mongodb mongoose


【解决方案1】:

问题是我在 promise 的 resolve 函数中做错了。我正在做类似的事情 res.status(200).send({}) .因此,无论执行什么查询,我在客户端返回的结果都是 {}。

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 2011-09-05
    • 2017-10-05
    • 2014-05-30
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多