【问题标题】:Mongoose Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex charactersMongoose 错误:传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串
【发布时间】:2020-09-30 03:01:59
【问题描述】:

我正在使用 Mongoose 创建一个用户,我想使用我自己的 _id。我认为您可以使用以下代码将任何字符串转换为ObjectIdmongoose.Types.ObjectId('4fhTTRkUYNPBUSiYIhz8YHZ9wQ02')。这是其他几个 Stack Overflow 答案所建议的。但是,当我在 Node 中使用此代码时,出现以下错误:Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters

我做错了什么?

router.post("/create_user", (req, res) => {
  const id = req.body.id;
  
  console.log("/create_user id : ", id); // <-- logging successfully '4fhTTRkUYNPBUSiYIhz8YHZ9wQ02'
  
  User.create({
    _id: mongoose.Types.ObjectId(id), // <-- generating error
    name: "Joe"
  })
  .then((u) => {
    return res.json({ user: u });
  })
  .catch((err) => {
    console.log("/create_user error : ", err);
    return res.json({ error: err });
  });
});

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    我认为您可以将任何字符串转换为 ObjectId

    情况并非如此,只有部分字符串是有效的 ObjectId。

    【讨论】:

    • 你能详细说明吗?
    • 我建议你参考文档。
    猜你喜欢
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多