тип: mongoose.Schema.Types.ObjectId не работает - PullRequest
0 голосов
/ 25 февраля 2019

Я действительно борюсь с этим, действительно не знаю, почему это перестало работать, но я больше не могу нажимать на свои вложенные схемы с помощью 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, что я просто не могу понять ????спасибо

...