node.js简单的连表查询

1,先写一个clazz班级类:c++

var mongoose=require('mongoose');

var  clazzschema=new mongoose.Schema({
    clazzname:String

});

mongoose.model('Clazz',clazzschema);

2:在写一个student类,关联clazz。mongoose

/**
 * Created by 1 on 2016/4/12.
 */
var mongoose=require('mongoose');

var  studentschema=new mongoose.Schema({
    studentname:String,
    //关联clazz
    clazzid:{
        type:mongoose.Schema.ObjectId,
        ref:'Clazz'
    }

});

//写一个静态类;查询该学生的班级

studentschema.statics={
    findClazzNameByStudentId:function(studentid,callback){
    return this.findOne({_id:studentid})
        .populate('clazzid')
        .exec(callback);
    }
}


mongoose.model('Student',studentschema);

3,在访问连接里面调用。先存一个班级和一个学生;ui

 //var clazz=new Clazz({
//  clazzname:'c++'
//});
//
//console.log(clazz);
//
//
//clazz.save(function(err){
//  if(err){
//    console.log(err);
//  }
//  var student=new Student({
//    studentname:'aaaa',
//    clazzid:clazz._id
//  });
//  console.log(student);
//  student.save(function(err){
//    if(err){
//      console.log(err);
//    }
//    console.log('success');
//  });
//});

4:而后找该学生对应的班级this

Student.findClazzNameByStudentId('570ca4956747c9b41e2a5da3',function(err,student){
  if(err){
    console.log(err);
  }
  console.log(student.clazzid.clazzname);
});
相关文章
相关标签/搜索