Node.js Mongoose find不返回mongo所返回的结果
我有一个名为getTeamEmployees的方法,它应该获取teamId等于方法参数teamId的员工。看起来是这样的:Node.js Mongoose find不返回mongo所返回的结果,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个名为getTeamEmployees的方法,它应该获取teamId等于方法参数teamId的员工。看起来是这样的: public getTeamEmployees(teamId: number): Promise<any> { return MDBDatabaseController.EmployeeModel.find({ teamId: teamId }).exec(); } MDBDatabaseController.EmployeeModel = model
public getTeamEmployees(teamId: number): Promise<any> {
return MDBDatabaseController.EmployeeModel.find({ teamId: teamId }).exec();
}
MDBDatabaseController.EmployeeModel = model<IEmployee>('Employee', EmployeeSchema.schema);
如果我使用mongo shell执行此操作,我会得到以下结果:
db.employees.find({ teamId: 13 }, { fields: {} })
Error: error: {
"ok" : 0,
"errmsg" : ">1 field in obj: {}",
"code" : 2,
"codeName" : "BadValue"
}
如果我在没有{fields:{}}部分的情况下执行它,一切都正常。它给了我5个结果
我将mongoose与typescript一起使用,我的模型实例化如下:
public getTeamEmployees(teamId: number): Promise<any> {
return MDBDatabaseController.EmployeeModel.find({ teamId: teamId }).exec();
}
MDBDatabaseController.EmployeeModel = model<IEmployee>('Employee', EmployeeSchema.schema);
MDBDatabaseController.EmployeeModel=model('Employee',EmployeeSchema.schema);
其中,IEEMPLOYEE是一个扩展mongoose.Document的接口,它有一个名为teamId的字段,类型为Number大写字母N
EmployeeSchema是一个静态属性为“schema”的类,该属性等于mongoose.schema的新实例,该类具有类型为Number的属性为teamId
有什么问题吗?问题是我在承诺的解决功能中做错了什么。我在做类似的事情
res.status(200).send({})
. 因此,无论执行什么查询,我在客户端得到的都是{}。看起来find方法在find查询中添加了{fields:{}}。值得检查您正在使用的mongoose版本。也可以尝试使用一个简单的模型类而不是静态属性。然后你就会知道罪犯的下落