Node.js javascript原型对象中的mongoose模型继承
假设您的主服务器中需要这样的路由初始化:Node.js javascript原型对象中的mongoose模型继承,node.js,mongodb,express,mongoose,prototypal-inheritance,Node.js,Mongodb,Express,Mongoose,Prototypal Inheritance,假设您的主服务器中需要这样的路由初始化: 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'
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) {...})
}
出于某种原因,mongo将其保存为空文档,即使标题和内容参数是预期的字符串。正如所料,这个.Model是某种mongoose对象,但它似乎拒绝保存或实例化。有什么想法或建议吗
注意:我添加了controller.method.bind(controller),因为这是(我知道的)访问这个.Model的唯一方法
编辑:我还尝试了以下方法:
var TextController = function(myCollection) {
this.myCollection = myCollection
this.list = function(req, res) {
this.myCollection.find({}, function { ... })
}
}
还尝试在函数范围内传入名称并初始化模型
函数(name){this.myCollection=mongoose.model(name)…}
这与javascript原型无关,完全是因为mongoose如何实现混合类型模式:
要告诉mongoose文档已更改,您需要markModified(字段)
这里的例子:除了这个问题之外,我一直无法得到任何关于这个问题的答案。有人有想法吗?