2017-01-16 42 views
0

我是node.js,mongodb和mongoose的新手。對貓鼬的ref對象有點問題。如何從參考對象中插入項目

這是我的代碼

admin.js

router.post('/accounts/show_account/team/add_member/:account_id/:team_id', function(req,res){ 

    var account_id = req.params.account_id; 
    var team_id = req.params.team_id; 

    var full_name = req.body.full_name; 
    var position = req.body.position; 
    var dateStarted = req.body.dateStarted; 

    var errors = req.validationErrors(); 

    if (errors) { 
     // res.render('register',{errors:errors}); 
     console.log('errors'); 
    } else{ 
     var newMember = new Members({ 

      full_name : full_name, 
      position : position, 
      dateStarted : dateStarted 

     }); 

     newMember.save(function(err,member){ 
      if (err) { 
       console.log(err); 
      } else { 
       console.log(member); 
      } 
     }); 
    } 
}); 

model.js - >架構

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

var MemberSchema = mongoose.Schema({ 

    full_name : { 
     type: String 
    }, 
    current_position : { 
     type: String 
    }, 
    dateStarted : { 
     type: String 
    }, 
    is_admin: { 
     type: Boolean, 
     default : false 
    } 
}); 

var member = module.exports = mongoose.model('Members', MemberSchema); 
module.exports.createMember = function(newMember, callback){ 

    newMember.save(function(err){ 
     if (err) throw err; 
    }); 

} 

team.js - >團隊架構

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

var TeamSchema = mongoose.Schema({ 
    team_name: { 
     type: String 
    }, 
    date_created: { 
     type: Date 
    }, 
    members: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref : member 
    }] 
}); 




var Team = module.exports = mongoose.model('Team', TeamSchema); 



module.exports.createTeam = function(newTeam, callback){ 

    newTeam.save(function(err){ 
     if (err) throw err; 
    }); 

} 

我我試圖加入團隊模式和成員r模式,但我不知道如何去做。

+0

在'ref'你應該輸入' 「成員」'的名字模型 –

+0

我想我已經在參考文獻中加入了「成員」模型。你能指出我的錯誤嗎? –

+0

您輸入了對會員模型的參考。相反,只需將模型的名稱作爲字符串。 'ref:'會員' –

回答

1

你應該添加架構相關的字符串名字

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

var TeamSchema = mongoose.Schema({ 
    team_name: { 
     type: String 
    }, 
    date_created: { 
     type: Date 
    }, 
    members: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref : "Members" 
    }] 
}); 




var Team = module.exports = mongoose.model('Team', TeamSchema); 



module.exports.createTeam = function(newTeam, callback){ 

    newTeam.save(function(err){ 
     if (err) throw err; 
    }); 

} 

現在你可以使用[populate][1]功能,當你做一個serch主頁「加入」的模式。

如果你需要插入新會員TeamSchema文件只需添加一個_id的新成員

var newMebers = new Members({...}); 

    newMembers.save() 
    .then(function(newMember){ 
     return TeamSchema.findById(<TeamId>, 
      {$push:{members:newMember._id}); 
     }) 
     .catch(function(err){ console.error(err)});