如何从一个集合中检索信息到mongoose中的另一个集合?

时间:2017-03-22 12:14:12

标签: node.js mongodb mongoose-schema

当我想报告特定学生时,我有一个学生收藏  studentId报告必须与studentId一起存储在报告集中  我给了什么报告。我想使用个人收藏品 这是student schema

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

//创建架构

 var studentSchema = new Schema({
        name: {
            type: String,
            required: true
                },
        dateofbirth: {
            type: Date,
            required: true
        },
       schoolname:
    {
    type:String,
    required:true
    },
     standard:
    {
    type: Number,
    required:true
    }

    }, {
        timestamps: true
    });

这里是report schema

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var reportSchema = new Schema({
    date: {
    type:Date,
    required:true
    },
    comment:
    {
    type:String,
    required:true
    }
    },
    {
    timestamps: true
});

var Report = mongoose.model('report', reportSchema);
 module.exports = Report;

那么如何从学生收藏中恢复学习?我如何向特定学生提供报告?

1 个答案:

答案 0 :(得分:1)

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
     var studentSchema = new Schema({
           name:         {type: String, required: true},
           dateofbirth:  {type: Date, required: true},
           schoolname:   {type:String, required:true},
           standard:     {type: Number, required:true},   
            timestamps:   true
        });
   var reportSchema = new Schema({
       date: {type:Date,required:true},
        comment: {type:String,required:true}
          timestamps: true,
           student_id: [{type: String, ref:'student',required: true}]   //store your student{_id} relation here ref ==> is just a Collection name
       });
 mongoose.connect('mongodb://localhost/your_db_name_here', {
  // using mongoose client to avoid promises exception
  useMongoClient: true,
});

    //just making your collection available to next controller.js file
     module.exports= {
       student : mongoose.model('student',studentSchema ),
       report: mongoose.model('report', reportSchema)
        };
  

controller.js我一直在为你的案例使用express.js

    var db = require("./db.js");
     var app = require("express")();
     app.post("/api/student/register", (req, res) => {
         var dbdata = {
              name: req.body.name,
              .......
          }   
         db.student.create(dbdata, (er, callback) => {
             if(er)return res.json("error");
                       return res.json("successfully inserted");

             });
       });  
         app.post("/api/student/report/create", (req, res) => {
             //while creating a report you have to pass a Student primary key
            var dbdata = {
                    date: req.body.data;
                     comment: req.body.comment,
                     student_id: req.body.student_id 
      // similar to foreign key relation ship}
                } 
               db.report.create(dbdata, function(er, callback){
            if(er)return res.json("err");
          return res.json("successfully inserted");

            });  

        });
  
    

你的回答

  
app.post("/particular/student/report", function(req, res){
  db.report.find({student_id:"your student id here"}).populate('student_id').exec(function(err, data){
    if(err)return res.json("db exception");
    return res.json(data);  //you will get all your student report for the particular student
  });
});

这里是 mongoose populate official docs 如果你有关于猫鼬或平均堆栈的其他基本内容,那么kinldy会引用https://github.com/Muthukumars1994/Meanapp