📜  将字符串或字符串数组转换为对象 mongoose 对象 id - Javascript (1)

📅  最后修改于: 2023-12-03 15:09:35.462000             🧑  作者: Mango

将字符串或字符串数组转换为对象 mongoose 对象 id

在使用 mongoose 进行数据库操作时,经常会涉及到操作 MongoDB 的 _id 字段。而 mongoose 中的 _id 也并不是一个普通的字符串,而是一个 ObjectId 类型。因此,如果需要将字符串或字符串数组转换为 mongoose 对象 id,需要对其进行相应的处理。

方法一:使用字符串构建 ObjectId 对象

可以使用 mongoose.Types.ObjectIdcreateFromHexString() 方法将字符串转换为 ObjectId 对象。

const mongoose = require('mongoose');
const idString = '60bf142c59f87f8f900cbe9d';
const idObject = mongoose.Types.ObjectId.createFromHexString(idString);
console.log(idObject); // 输出 <ObjectId 60bf142c59f87f8f900cbe9d>

此方法适用于将单个字符串转换为 ObjectId 对象。

方法二:使用 map 方法转换数组

如果需要将字符串数组转换为 ObjectId 数组,可以使用数组的 map() 方法。

const mongoose = require('mongoose');
const idStringArray = ['60bf142c59f87f8f900cbe9d', '60bf142c59f87f8f900cbe9e'];
const ObjectIdArray = idStringArray.map(idString => mongoose.Types.ObjectId(idString));
console.log(ObjectIdArray); // 输出 [<ObjectId 60bf142c59f87f8f900cbe9d>, <ObjectId 60bf142c59f87f8f900cbe9e>]

此方法适用于将字符串数组转换为 ObjectId 数组。

方法三:使用 mongoose 的 Schema.Types.ObjectId

如果需要将一个对象的字段转换为 ObjectId 类型,可以在定义 mongoose 的 schema 时,将字段类型设置为 Schema.Types.ObjectId

const mongoose = require('mongoose');

const personSchema = new mongoose.Schema({
  firstName: { type: String, required: true },
  lastName: { type: String, required: true },
  address: {
    street: { type: String },
    city: { type: String },
    state: { type: String },
    zip: { type: String },
  },
  spouse: { type: Schema.Types.ObjectId, ref: 'Person' },
});

const Person = mongoose.model('Person', personSchema);

此方法适用于将一个对象中的某个字段转换为 ObjectId 类型。

以上便是将字符串或字符串数组转换为对象 mongoose 对象 id 的方法。