Я действительно борюсь с этим, действительно не знаю, почему это перестало работать, но я больше не могу нажимать на свои вложенные схемы с помощью mongoose.Простая версия:
2 модели
var mongoose = require("mongoose");
var testrestSchema = new mongoose.Schema({
name: String,
comments: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Testcomm"
}
]
});
module.exports = mongoose.model("Testrest", testrestSchema);
var mongoose = require("mongoose");
var testcommSchema = new mongoose.Schema({
text: String,
name: String,
});
module.exports = mongoose.model("Testcomm", testcommSchema);
2 маршрута
=========================================
var express = require("express");
var router = express.Router();
var Testrest = require("../models/testrest");
var name = "Mr TeeHee"
Testrest.create({name: name}, function(err, testrest){
if(err){
console.log(err);
} else {
testrest.save();
console.log(testrest);
}
})
module.exports = router;
var express = require("express");
var router = express.Router({mergeParams: true});
var Testrest = require("../models/testrest");
var Testcomm = require("../models/testcomm");
Testrest.findById("5c73d77ca538e2a697bb2a60", function(err, testrest){
if (err){
console.log(err)
} else {
//create new testcomm
var text = "please help"
var name = "Mr Teeheehee"
Testcomm.create({text:text, name:name}, function(err, testcomm){
if (err) {
console.log(err)
} else {
//connect new testcomm to testrest
testcomm.save();
testrest.comments.push(testcomm);
testrest.save();
console.log(testcomm);
console.log(testrest.comments);
}
})
}
})
Когда я запускаю маршрут testrest I,get:
{ __v: 0,
name: 'Mr TeeHee',
_id: 5c73d90bf4bf0d134c5cf870,
comments: [] }
Когда я запускаю маршрут testcomm, кажется, что он толкает к коллекции testrest:
{ __v: 0,
text: 'please help',
name: 'Mr Teeheehee',
_id: 5c73d91c6fe83d1734c683d2 }
[{"_id":"5c73d91c6fe83d1734c683d2","name":"Mr Teeheehee","text":"please help","__v":0}]
Mongoose: testrests.update({ _id: ObjectId("5c73d77ca538e2a697bb2a60") }, { '$pushAll': { comments: [ ObjectId("5c73d91c6fe83d1734c683d2") ] }, '$inc': { __v: 1 } })
Но поле комментариев в коллекции testrest остается пустым:
{
"_id": {
"$oid": "5c731425fc86bd91ae6b8e6b"
},
"name": "murph8e",
"comments": [],
"__v": 0
}
Как я уже говорил, этот код работал отлично 4 месяца назад, я не могу найти никаких проблем с mongoose или mLab (даже если они скоро мигрируют), остальные мои проекты работают нормально.Что-то изменилось с mongoose.Schema.Types.ObjectId, что я просто не могу понять ????спасибо