在更新mongoose上设置_id
引用可以通过使用populate()
方法来实现。
首先,确保在定义模式时,引用字段使用了正确的类型,即Schema.Types.ObjectId
。例如:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const UserSchema = new Schema({
name: String
});
const PostSchema = new Schema({
title: String,
author: {
type: Schema.Types.ObjectId, // 引用字段类型为 ObjectId
ref: 'User' // 引用的集合名称
}
});
然后,在更新数据时,可以使用populate()
方法来填充引用字段。例如,假设我们要更新一篇文章的作者:
const Post = mongoose.model('Post', PostSchema);
Post.findById(postId)
.populate('author') // 填充 author 字段
.exec(function(err, post) {
if (err) {
console.error(err);
return;
}
post.author = newAuthorId; // 设置新的作者 ObjectId
post.save(function(err, updatedPost) {
if (err) {
console.error(err);
return;
}
console.log(updatedPost);
});
});
以上代码中,populate('author')
会填充 author
字段,使其包含完整的用户对象,而不仅仅是 ObjectId
。然后,我们可以将author
字段设置为新的作者ObjectId
,并保存更新后的文章。
这种设置_id
引用的方式适用于在mongoose中建立数据之间的关联关系,如作者和文章之间的关系。
领取专属 10元无门槛券
手把手带您无忧上云