javascript - 为什么 mongoose 以 ID 作为 Buffer 而不是字符串的对象形式返回对象 ID'?

标签 javascript node.js mongoose static mongoose-populate

我的 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。只需使用 StringtoString()

enter image description here

关于javascript - 为什么 mongoose 以 ID 作为 Buffer 而不是字符串的对象形式返回对象 ID'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57435597/

相关文章:

javascript - 通过按键提交单独的表单元素

javascript - ‘this’ 在 JavaScript 中如何工作?

node.js - NodeJS、MongoDB、$lookup 结果为空数组的聚合函数[]

node.js - 使用 Mongoose/Express/Node 在一个 POST 路径中保存多个模型文档

javascript - 存储点击值以供稍后使用

javascript - 使用 json 对象预填充表单的值

node.js - Mapbox gl原生拼接间距大于0的瓷砖

javascript - 为什么我会收到 400 错误? Node 、Express、ReactJS

javascript - 如何重命名mongodb中整个集合中的一个元素名称

node.js - 如何通过其 id 选择子文档?