Why does this code produce an TypeError: Object #<Object> has no method 'save'? The project object exists and is singular.
/** Update project */
exports.update = function (req, res, next) {
var projectId = req.params.id;
Project.findById(projectId, function (err, project) {
if (project) {
project.screens[0] = project.screens[0] || {};
project.screens[0].name = 'Test screen';
project.screens[0].data = req.body.data;
project.save(function(err) {
if (err) {
res.json(500, err);
}
else {
res.json(200, 'Update complete');
}
});
}
else {
res.json(404, 'PROJECT_NOT_FOUND');
}
});
};
Schema:
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var ProjectSchema = new Schema({
name: String,
slug: String,
dateCreated: Date,
dateUpdated: Date,
createdByUserId: Schema.Types.ObjectId,
screens: [ { name: String, data: Schema.Types.Mixed } ]
//awesomeness: Number
//Schema.Types.Mixed
// ProjectSchema.methods.greet = function() { return 'Hello, ' + this.name; };
});
mongoose.model('Project', ProjectSchema);
Console output just before project.save:
Logged 'project': { name: 'My First Project',
slug: 'my-first-project',
dateCreated: Wed Jan 29 2014 22:26:22 GMT+0100 (CET),
_id: 52e971fe003687a492000002,
__v: 0,
screens: [ { data: 'testWeld', name: 'Test screen' } ] }
Project.updateinstead.