我的 UnitSchema 中有一个静态方法,可以通过标记查找单元。它获取一个标记作为参数,并尝试在 Unit 模型上使用普通的 findOne 方法查找单元:
UnitSchema.statics.findByToken = async function (token) {
const Unit = this
let unit = await Unit.findOne({ 'Tokens.token': token }).populate('Organisation')
return unit
}
我已经使用这个方法很长时间了,它总是返回正确的对象。现在,它似乎突然无缘无故地返回一个“完整”的 Mongoose 对象,其中包含所有额外的信息和功能,并且所有对象 ID 现在都是对象格式而不是字符串格式,例如:
ObjectID {
_bsontype: 'ObjectID',
id: <Buffer 5c 85 43 16 f1 ad 70 d8 f8 97 48 78>
}
而不是:
_id: '5d49595246853f14fc5168e9'
因此,我无法再使用正常的方式填充字段:.populate('field')
,这会破坏我的代码。
我疯狂地四处搜索,但找不到对此的解释,因此我不知道如何解决它。非常感谢您的帮助!
最佳答案
我知道这是一个迟到的答案。但我最近遇到了这个问题,并搜索了为什么响应是在 Buffer
数组中给出的,而不是在 id
中给出的。但我找不到任何相关资源。
但是,要将Buffer
转换为id
。只需使用 String
或 toString()
。
关于javascript - 为什么 mongoose 以 ID 作为 Buffer 而不是字符串的对象形式返回对象 ID'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57435597/