Datamodel trong mongoose



  • Mình có 2 model, 1 là restaurant và 1 table là user ( userid), trong model mình có 1 field là array of userid ( là 1 array chứa những userid của thằng user, qua userid ở model restaurant mình lấy dữ liệu của thằng user được ). Nhưng mình ko biết cách thiết kế cái model đó như thế nào, và cách insert, mọi người có example nào ko ? Cảm ơn.



  • Model build:

    // restaurantModel.js 
    var mongoose = require('mongoose');
    var restaurantSchema = new mongoose.Schema({
     name: String,  
    ....
    	userId:  [{
    		type: mongoose.Schema.Types.ObjectId,
    		ref: 'User'
    	}]
    ...
    })
    
    module.exports = mongoose.model('Restaurant',restaurantSchema);
    
    // UserModel.js
    var mongoose = require('mongoose');
    var userSchema = new mongoose.Schema({
    	...
    })
    module.exports = mongoose.model('User',userSchema);
    

    Usage:

    var restaurantModel = require('restaurantModel.js');
    
    router.route('/restaurant')
    .put(function(req,res,next){
    // create restaurant
     var restaurant = new restaurantModel({name:'Banh Xeo`'}); // or req.body.restaurant = {name:'Banh Xeo`'}
     restaurant.save(function(err,doc){
      if (err) return res.status(500).send(err);
       return res.send(doc);
       //{ _id: .., _v: .. , name: 'Banh Xeo`', userId:[]}
      });
    })
    .post(function(req,res,next){
     // update restaurant 
    var update = {
    userId:[userID1,userID2 ...,userIDn]
    };
    // or update = req.body.update 
    restaurantModel.findOneAndUpdate({name:'Banh Xeo`'},update,{new:true}).populate('userId').exec(function(err,doc){
     if (err)  return res.status(500).send(err);
     return res.send(doc);
      //{ _id: .., _v: .. , name: 'Banh Xeo`', userId:[userID1,userID2 ...,userIDn]}
    })
    })
    .get(function(req,res,next){
      restaurantMode.findOne({name:'Banh Xeo`'}).populate('userId').exec(function(err,doc){
      if (err)  return res.status(500).send(err);
      return res.send(doc);
     // { _id: .., _v: .. , name: 'Banh Xeo`', userId:[{_id:id1, name: ..., },{_id:id2, name: ..., },...{_id:idn, name: ..., }]}
     });
    })
    ...
    

    Các phần pop push User ra khỏi restaurant thì bạn tự nghiên cứu nhé.



  • @hidemanvn Thank Ban :)


Log in to reply