繁体   English   中英

猫鼬一对多的关系

[英]one to many relationship in mongoose

我正在使用均值堆栈创建一个混合应用程序,正在使用nosql在mongoose中创建数据库。我的数据库由两个表组成,一个是'donors',另一个是'bloodGroup'。 我的“ bloodGroup”架构如下:

module.exports = function(mongoose) {
 var Schema = mongoose.Schema;  

  /* bloodGroup Schema */
  var bloodGroupSchema = new Schema({
   name: { type: String, required: true }
  });
}

我的“捐赠人”模式如下:

/* Donor Schema */
var DonorSchema = new Schema({
 Name: { type: String, required: true },
 DOB: { type: Date, required: true, trim: true },
 Sex: { type: String },
 BloodGroupID: { type: Schema.Types.ObjectId, ref: 'BloodGroup', required: true },  
 ContactNo: { type: String, required: true },
 LocationId: { type: Schema.Types.ObjectId, ref: 'Location', required:true },
 EmailId: { type: String, required: true },
 Password: { type: String, required: true }
});

当许多献血者提到一个血型时,就会报告BloodGroup对象ID错误。如何解决此问题?

您可以参考此链接获取文档: http : //mongoosejs.com/docs/populate.html

保存参考

    /* Donor Schema */
    var DonorSchema = new Schema({
     _id : {type: Number},
     Name: { type: String, required: true },
     DOB: { type: Date, required: true, trim: true },
     Sex: { type: String },
     BloodGroupID: { type: Schema.Types.ObjectId, ref: 'BloodGroup', required: true },  
     ContactNo: { type: String, required: true },
     LocationId: { type: Schema.Types.ObjectId, ref: 'Location', required:true },
     EmailId: { type: String, required: true },
     Password: { type: String, required: true }
    });


    /* bloodGroup Schema */
   var bloodGroupSchema = new Schema({
       _bid :{ type: Number, ref: 'Donor' },
       name: { type: String, required: true }
   });


    module.exports = mongoose.model('Donor', DonorSchema);
    module.exports = mongoose.model('Blood', bloodGroupSchema);


    var vidya = new Donor({ _id: 0, name: 'Vidya', sex: 'F' }); 
        vidya.save(function (err) {
          if (err) return handleError(err);

          var blood = new BloodGroup({
            name: 'B+',
            _bid: vidya._id    // assign the _id from the Donor
          });

          blood.save(function (err) {
            if (err) return handleError(err);
            // thats it!
          });
        });

Mongo不是关系数据库,在mongDB中不存在一对多关系。 这个问题非常令人困惑,但是在标题之后,您应该将捐赠者嵌入到BloodGroup中,或者创建要引用的唯一ID字段并执行两个查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM