2013-09-11 2 views
0

Предположим, у вас есть инициализация маршрута, как это требуется в главном:мангуст модель наследования в Java-прототипичный объект

module.exports = function(app) { 
    for (var name in names) { 
    var schema = new Schema({}) // schema that accepts anything 
     , m = mongoose.model(name, schema) 
     , controller = new TextController(m) 
    app.get('/path', controller.create.bind(controller)) 
    // etc, etc 

И TextController определяется внешне как:

var TextController = function(Model) { 
    this.Model = Model 
} 
TextController.prototype.create = function(req, res) { 
    var aDoc = this.Model({ // this is the problematic bit 
     title: req.body.title 
    , content: req.body.content}) 
    aDoc.save(function(err) {...}) 
} 

По какой-то причине, Монго экономит это как пустой документ, хотя параметры заголовка и содержимого являются ожидаемыми строками. Как и ожидалось, this.Model - это своего рода объект mongoose, но, похоже, он отклоняет сохранение или создание экземпляра. Любые идеи или предложения?

Примечание: Я добавил контроллер.method.bind (контроллер), потому что это был единственный способ (я знал), чтобы получить доступ к этому. Мод.

Edit: Я также попытался следующие:

var TextController = function(myCollection) { 
    this.myCollection = myCollection 
    this.list = function(req, res) { 
    this.myCollection.find({}, function { ... }) 
    } 
} 

А также пытались переходящая в имени и инициализации модели в пределах функции function(name) { this.myCollection = mongoose.model(name) ... }

+0

Я не смог получить ответы на этот вопрос вне этого вопроса. У кого-нибудь есть идеи? – tippenein

ответ

0

Это оказывается не связано с JavaScript прототипы и полностью из-за того, как мангуст имеет смешанный тип Schemas:

для того, чтобы сказать мангуст документ изменился вам нужно markModified(field) пример здесь: http://mongoosejs.com/docs/schematypes.html#mixed

Смежные вопросы