我正在尝试使用手动生成的ID填充集合。我需要这样才能让测试人员更容易提供反馈,因为我们通过ID [等等]搜索记录。
我使用一些预定义的键定义了一个const
数组,其余的我希望由mongoose生成。下面是一个用样本数据填充数据库的片段。
var col = db.collection('clients')
for (let i = 0; i < count; i++) {
var client = createClientRecord()
if (cifs.length > i) {
client._id = cids[i]
} else {
client._id = new mongoose.Types.ObjectId
}
console.log('client._id:', client._id)
这不起作用我想要。我获得了与数组中一样多的记录。拥有mongoose生成的ID不起作用。代码就卡在那里了。
另外,我将schema
定义为:
const clientSchema = new mongoose.Schema({
id: {type: String, unique: true, required: true},
email: { type: String, unique: true, required: true },
birthName: String,
...
})
这是一个有效的选择吗?我可以自己手动创建独特的id
吗?它应该是id
还是_id
?
有任何想法/建议吗?
答案 0 :(得分:0)
您不需要手动生成ID,因为它将由Mongoose 自动生成。你只需要定义一个模式 - 这就是全部。请不要指定&#39; id&#39;和&#39; _id&#39;架构中的字段。一切都将由Mongoose处理。
至于最后一个问题(&#39; id&#39;或&#39; _id&#39;),&#39; _id&#39;是一个MongoDB id本身(对象ID),但是&#39; id&#39;是&#39; _id&#39;的字符串化getter。 &#39; ID&#39;和&#39; _id&#39;看起来相似,但他们的类型不同。 &#39; ID&#39;是一个字符串,&#39; _id&#39;是一个对象id,所以我们有以下条件。它们的值相等,但不是类型。
请注意,您可以设置自己的ID,但默认情况下它的工作方式如上所述。