当前位置: 首页 > 后端技术 > Node.js

Mongoose的populate

时间:2023-04-03 11:58:49 Node.js

MongoDB是一个文档数据库,所以它没有关系数据库的连接特性。但是mongoose也有自己的方法来解决两张表之间的关联问题。Mongoose通过populate解决了这个问题。接下来分享populate的方法。populate的使用方法一创建两个modelvarpersonSchema=Schema({_id:Number,name:String,age:Number,});varstorySchema=Schema({_creator:{type:Number,ref:'Person'},title:String,});varStory=mongoose.model('Story',storySchema);varPerson=mongoose.model('人',personSchema);创建数据varaaron=newPerson({_id:0,name:'Aaron',age:100});aaron.save(function(err){if(err)return;varstory1=newStory({title:"Onceuponatimex.",_creator:aaron._id});story1.save(function(err){if(err)return;});//});populate的使用Story.findOne({title:'Onceuponatimex.'}).populate('_creator').exec(function(err,story){if(err)returnhandleError(err);console.log('Thecreatoris%s',story._creator.name);//prints"ThecreatorisAaron"}})populate的使用方法二vararticlesSchema=newmongoose.架构({标题:{type:String,默认:“”},内容:{type:String,default:''},reduce_content:{type:String},时间:{type:Date,default:Date.now},like_count:{type:Number,default:0},评论:[{回复:{type:mongoose.Schema.Types.ObjectId,ref:'user'},time:{type:Date,default:Date.now},content:{type:String},replyTo:{type:String,default:''},like_count:{type:Number,default:0},}],type:{type:String,default:""},isPublish:{type:Boolean,default:true},});vararticles=mongoose.model("文章”,文章架构);这里的数据库设计是articles下面嵌套了一个comments数组,commets下面的reply和user表是相连的。如何使用填充?db.articles.findOne({_id:id}).populate('评论.回复')