Mungo verschachtelte Dokumente

Ich habe 2 Schemata in Mungo eingerichtet:

var Job = new mongoose.Schema({
    title: String,
    budget: Number
});

var JobModel = mongoose.model('Job', Job);

var Customer = new mongoose.Schema({
    name: String,
    jobs: [Job]
});

var CustomerModel = mongoose.model('Customer', Customer);

Das Kundenmodell verfügt über eine Reihe von Auftragsmodellen.

Ich füge einen neuen Job wie folgt hinzu:

app.post('/api/jobs', function(req, res){

    var job = new JobModel({
        title: req.body.title,
        budget: req.body.budget
    });

    job.save(function(err){
        if(!err){
            CustomerModel.findById(req.body.customerId, function(err, customer){
                if(!err){
                    customer.jobs.push(job);
                    customer.save(function(err){
                        if(!err){
                            return console.log('saved job to customer');
                        }
                    });
                }
            });
            return console.log('created job');

        } else {
            return console.log(err);
        }
    });

    return res.send(job);
});

Wenn ich einen neuen Job hinzufüge und alle Kunden bekomme, die ich für richtig halte:

[{
    "__v": 1,
    "_id": "50f85695771aeeda08000001",
    "name": "Customer1",
    "jobs": [
      {
        "_id": "50fad6985edd968840000002",
        "budget": 100,
        "title": "job1"
      }
    ]
  }, ...]

Wenn ich jetzt job1 aktualisiere und alle Jobs erhalte, wurde job 1 aktualisiert (das Budget beträgt jetzt 500).

[{
    "title": "job1",
    "budget": 500,
    "_id": "50fad6985edd968840000002",
    "__v": 0
  }, ...]

Der Job1 im Job-Array des Kunden bleibt jedoch unverändert.

 [{
        "__v": 1,
        "_id": "50f85695771aeeda08000001",
        "name": "Customer1",
        "jobs": [
          {
            "_id": "50fad6985edd968840000002",
            "budget": 100,
            "title": "job1"
          }
        ]
      }, ...]

Muss ich daher das Auftragsarray von Kunde1 durchsuchen und den Auftrag1 suchen und aktualisieren, auch jedes Mal, wenn ich ihn aktualisiere oder lösche, oder mache ich die ganze Schachtelungssache völlig falsch?

Ich verstehe, dass das Auftragsarray im Kunden ein Array von Objekten ist, aber ich dachte, dass es sich bei ihnen möglicherweise nur um eine Referenzkopie des Auftrags handelt und nicht um ein Duplikat?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage