2017-03-27 8 views
0

私は移入方法を使用して別のコレクションにコレクションを参照したい意味する新しいが、そうモンゴースが不在になっていますか?

会社スキーマ

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var ClientEmployee = require('../models/clientEmployee') 

var CompanySchema = new Schema({ 
companyId : {type: String, required :true, unique : true}, 
companyName : {type: String, lowercase : true, required :true, unique : 
true}, 
phone : {type: String}, 
mobile : {type: String}, 
website : {type: String, lowercase : true, required :true, unique : true}, 
address : {type: String}, 
city : {type: String}, 
zipcode : {type: String}, 
country : {type: String}, 
vatNumber : {type: String}, 
primaryContacts : [{ type: Schema.Types.ObjectId, ref: 'ClientEmployee'}] 
}) 

module.exports = mongoose.model('Company',CompanySchema) 

私は会社

にclientemployeeを投入しようとしています行うことができませんClientEmployeeスキーマ

var ClientContactSchema = new Schema({ 
    var mongoose = require('mongoose'); 
    var Schema = mongoose.Schema; 
    var ClientEmployeeSchema = new Schema({ 
    username : {type: String, required :true, unique : true}, 
    contactName : {type: String, required :true, unique : true}, 
    status : {type: String}, 
    email : {type: String, lowercase : true, required :true, unique : 
     true}, 
    phone : {type: Number, required :true, unique : true}, 
    mobile : {type: Number, required :true, unique : true}, 
}) 

module.exports = mongoose.model('ClientEmployee', ClientEmployeeSchema) 

アンギュラルート

更新会社のルート

$scope.updateCompanies = function() { 

$http.put('/api/companies',$scope.selectedComapny) 
    .success(function(data) { 

    }); 
}; 

会社ルート

router.put('/companies', function(req, res){ 
Company 
.findOne({companyName : req.body.companyName}) 
.populate('primaryContacts') 
.exec() 
}); 

クライアントの従業員のルート

の更新

$scope.addClientEmployee = function() { 
$http.post('/api/clientEmployees', $scope.clientEmployee) 
    .success(function(response) { 
     $scope.updateCompanies(); 
    }); 
} 

Expressのルート

clientemployeeルートを追加します。

router.post('/clientEmployees', function(req, res) { 
var clientEmployee = new ClientEmployee(); 
clientEmployee.username = req.body.username; 
clientEmployee.contactName = req.body.contactName; 
clientEmployee.status = req.body.status; 
clientEmployee.email = req.body.email; 
clientEmployee.phone = req.body.phone; 
clientEmployee.mobile = req.body.mobile; 

clientEmployee.save(); 

res.send('Employee created') 
});` 
+0

あなたはどのような問題に直面していますか? – sidgate

+0

それは私の人口に存在する未定義の変数を与える –

答えて

0

まず、あなたはprimaryContactsであなたの会社を取得するには、次にClientEmployee

newClientEmployee = new ClientEmployee({username: "Tetest", contact: "", ...}); 
newClientEmployee.save(function(err) { 
    if (err) return; 

    // Then you can attach him to the Company 
    newCompany = new Company({companyId: "", companyName: "Corporate", ...}); 
    newCompany.primaryContacts.push(newClientEmployee._id); 
    newCompany.save(function(err) { 
     if (err) return; 
    }); 
}); 

を作成する必要があります。

Company 
.findOne({companyName : req.body.companyName}) 
.populate('primaryContacts') 
.exec(function(err, company) { 
    if (err) return; 
    console.log(company); // Print your companies with your PrimaryContacts array 
    console.log(company.primaryContacts[0]); // Will display "Tetest" if req.body.companyName = Corporate 
}) 
+0

ちょっと私の会社はすでにデータベースに存在するので、なぜ私はそこに新しい会社を作成する.. ?? –

+0

Company.findOne({companyName:req.body.companyName})populate( 'primaryContacts')。exec(function(company、err){ company.primaryContacts.push(YourClientEmployee._id); }) – dada17xs

+0

どのように私はclientEmployee IDを取る??任意のアイデア –

関連する問題