我在(用戶1 < ---> 1 .. *機器人)之間發生了一對多關聯錯誤,我想在添加一個新文檔用戶訂閱他應該添加一個帶有(reference和nom)的新機器人,因此用戶信息應該作爲新文檔添加到用戶集合中,機器人信息應該添加爲我的mongodb數據庫中機器人集合的新集合。node.js mongodb一對多關聯錯誤
/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:
router.get('/', function(req, res, next){
models.robot.aggregate([
{
"$group": {
"_id": "$user_id",
"robots": { "$push": "$$ROOT" }
}
}
]).exec(function(err, results){
if (err) res.json({error: err});
models.user.populate(results, { "path": "_id" }, function(err, result) {
if(err) res.json({error: err});
console.log(result);
res.json(result);
});
});
});
結果郵差:
The Result on CMD after i execute :db.robots.find().pretty();
{
"_id" : ObjectId("57b5862673c11c840b31cc55"),
"reference" : "Rob9999",
"nom" : "Robot 9999",
"flag" : false,
"__v" : 0
}
和CMD結果之後我執行db.users.find()相當();
{
"_id" : ObjectId("57b5862673c11c840b31cc54"),
"nom_prenom" : "test",
"username" : "test",
"password" : "test",
"email" : "[email protected]",
"sexe" : "femme",
"adresse" : "tunis",
"admin" : false,
"robots" : [ ],
"equipements" : [ ],
"__v" : 0
}
我不覺得爲什麼在用戶的陣列機器人是空的?
我可以這樣做插入一個用戶和一個應該出現在該用戶的機器人列表中的機器人嗎?
何時以及如何叫你的'路線/ robots.js'? –