MongoDB Node.JS insertOne 错误:“类型‘字符串’无法分配给类型‘ObjectId | 未定义”

Yan*_*Yan 6 mongodb node.js typescript

我尝试将一个文档插入到集合中,但是当我指定_id插入文档的字段时出现此错误。那么如何插入_id除 之外的类型的文档呢ObjectId

下面的代码给了我这个错误。当我删除 时_id,一切正常,但 _id 将自动生成。我只是希望它是字符串类型。我知道这是可能的。我可以_id使用 MongoDB shell 制作字符串。

async function foo() {
  const users = client.db("test").collection("users")
  users.insertOne({
    _id: "a string",
    name: "Tom",
    age: 26,
  })
}
Run Code Online (Sandbox Code Playgroud)

小智 5

如果你用它输入你的集合_id: string应该可以

type usertype = {
  _id: string,
  name: string,
  age: number
}

async function foo() {
  await client.connect()
  const users = client.db("test").collection<usertype>("users")
  const result = await users.insertOne({
    _id: "custom string",
    name: "Tom",
    age: 26,
  })
  console.log(result)
}
Run Code Online (Sandbox Code Playgroud)

这应该会给你你正在寻找的结果