2016-08-18 23 views
0

(ユーザ1 < ---> 1 .. *ロボット)の間に1対多の関連付けエラーが発生しました。新しいユーザはサブスクリプションを行うために、新しいロボットに(参照と名義)を追加する必要があるので、ユーザ情報を新しいドキュメントとしてユーザコレクションに追加し、ロボット情報をmongodbデータベースの新しいコレクションとしてロボットコレクションに追加する必要があります。node.js mongodb 1対多の関連付けエラー

/routes/users.js:

router.post('/register', function(req, res, next) { 
//tester si username exist 
var user = new models.user({ 
nom_prenom: req.body.nom_prenom, 
username: req.body.username, 
password: req.body.password, 
email: req.body.email, 
sexe: req.body.sexe, 
adresse: req.body.adresse, 

admin: false 
}); 
var robot = new models.robot({ 
reference: req.body.reference, 
nom: req.body.nom, 
flag: req.body.flag   
}); 
user.save(function(err, u){ 
if(err) res.json(err); 
res.json(u); 
    }) 
robot.save(function(err, u){ 
if(err) res.json(err); 
res.json(u); 
    }) 
    }); 

/models/users.js:

var mongoose = require('../config/db'); 

var UserSchema = mongoose.Schema({ 

    nom_prenom: String, 
    password: String, 
    username: String, 
    email: String, 
    //username: { String, unique:true, required:true }, 
    //email: { String, unique:true, required:true }, 
    date_naissance: Date, 
    adresse: String, 
    sexe: String, 
    equipements:[{type: mongoose.Schema.Types.ObjectId, ref: 'Equipement'}], 
    robots:[{type: mongoose.Schema.Types.ObjectId, ref: 'Robot'}], 

    admin: Boolean 
    }); 

    module.exports = mongoose.model('User', UserSchema); 

/モデル/ロボット:

var mongoose = require('../config/db'); 

    var RobotSchema = mongoose.Schema({ 
    reference: String, 
    nom: String, 
    flag: Boolean, 
    user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } 
    }); 

    module.exports = mongoose.model('Robot', RobotSchema); 

/ルート/ロボット.js:

10結果ポストマン:

the robot array is empty

The Result on CMD after i execute :db.robots.find().pretty(); 

{ 
    "_id" : ObjectId("57b5862673c11c840b31cc55"), 
    "reference" : "Rob9999", 
    "nom" : "Robot 9999", 
    "flag" : false, 
    "__v" : 0 
} 

およびI)が(かなりdb.users.find()を実行した後、CMDに結果。

{ 
    "_id" : ObjectId("57b5862673c11c840b31cc54"), 
    "nom_prenom" : "test", 
    "username" : "test", 
    "password" : "test", 
    "email" : "[email protected]", 
    "sexe" : "femme", 
    "adresse" : "tunis", 
    "admin" : false, 
    "robots" : [ ], 
    "equipements" : [ ], 
    "__v" : 0 

}

ユーザの配列ロボットが空なぜ見つかりません?

そのユーザーのロボットのリストに表示されるユーザーとロボットを挿入することはできますか?

+0

いつ、どのようにあなたの 'ルート/ robots.js'と呼ばれますか? –

答えて

0

robot's _idrobotsの配列にuserのドキュメントに保存している間にプッシュしなかったと思います。

これを試してみてください。

router.post('/register', function(req, res, next) { 
//tester si username exist 
var user = new models.user({ 
nom_prenom: req.body.nom_prenom, 
username: req.body.username, 
password: req.body.password, 
email: req.body.email, 
sexe: req.body.sexe, 
adresse: req.body.adresse, 

admin: false 
}); 
var robot = new models.robot({ 
reference: req.body.reference, 
nom: req.body.nom, 
flag: req.body.flag   
}); 

// dont change the header(res.json(u)) multiple times, make sure you set the header 
// single time only. otherwise you may get unnecessary errors. 

robot.save(function(err, u){ 
    if(err) res.json(err); 
    //save user only after robot is successfully saved and push its id into robots array. 
    user.robots.push(u._id); 
    user.save(function(err, user){ 
     if(err) res.json(err); 
     res.json(user); 
     return; 
    }); 
    }); 
}); 
+0

あなたの助けを借りていただきありがとうございます。それは問題ありません。 –

+0

私はうまくいきました:) –

関連する問題