WesentlichenHinzufügen Kind Dokument vorhandenen mongodb Dokument
/models/server/destination.js
Ich versuche gerade ein neues Teildokument zu meinem bestehenden mongodb Dokument hinzuzufügen, dass das folgende Schema hat// this is the "destination" model for mongoose
var mongoose = require('mongoose')
var Adventure = require('../models/adventure')
// this is the schema that every entry will get when a new trip is made.
var tripSchema = mongoose.Schema({
name: { type: String, required: true },
city: { type: String, required: true },
dateStart: { type: Date, required: true },
dateFinish: { type: Date, required: true },
adventures: [Adventure]
})
// module.exports makes this model available to other file
module.exports = mongoose.model('Destination', tripSchema)
/server/models/adventure.js
var mongoose = require('mongoose')
var adventure = mongoose.Schema({
site: String,
rating: String,
photo: String,
website: String,
date: Date
})
module.exports = mongoose.model('Adventure', adventure)
REST Route Abenteuer
app.post('/api/destinations/:id/addAdventures', destinationsController.addAdventures)
/server/controllers/controller.js
module.exports.addAdventures = function(req, res) {
var id = req.params.id;
Destination.findOne({ _id: id }, function(err, result) {
var adventure = new Adventure(req.body)
var destination = result
destination.adventures.push(adventure)
destination.save(function(err, advresult) {
console.log('push worked')
res.json(advresult);
})
})
}
zu schreiben Wenn ich das Abenteuer nehmen aus dem destination.adventures.push()
der Code nicht brechen, aber wenn ich Abenteuer einfügen Ich erhalte einen Fehler
/Travellog/node_modules/mongoose/lib/types/array.js:117
return this._schema.caster.cast(value, this._parent, false);
^TypeError: undefined is not a function
at Array.MongooseArray.mixin._cast (/Travellog/node_modules/mongoose/lib/types/array.js:117:32)
at Array.MongooseArray.mixin._mapCast (/Travellog/node_modules/mongoose/lib/types/array.js:286:17)
at Object.map (native)
at Array.MongooseArray.mixin.push (/Travellog/node_modules/mongoose/lib/types/array.js:299:25)
at Query.<anonymous> (/Travellog/server/controllers/destinations-controller.js:28:28)
at /Travellog/node_modules/mongoose/node_modules/kareem/index.js:177:19
at /Travellog/node_modules/mongoose/node_modules/kareem/index.js:109:16
at process._tickCallback (node.js:355:11)
Awesome! Das hat perfekt funktioniert, danke, dass du für immer daran festhältst. Ich habe Mongoose-Dokumente gelesen, aber nach dem Aussehen hat das mit node.js wirklich zu tun? – pwborodich
Danke. Ich hatte auch das gleiche Problem. – FarheenP
Vielen Dank. Versucht, die Schemas in verschiedene Dateien zu trennen und das Modell oder etwas versehentlich eingeschlossen zu haben. 5 Stunden später. –