【发布时间】:2014-03-13 09:08:04
【问题描述】:
我正在尝试构建一个简单的插件来从 Mongo 获取数据到一个对象中,我可以在渲染时对其进行迭代。完整的代码在我的project 中,但它的本质是模拟馈线示例的失败尝试。我知道猫鼬的东西在控制台日志工作时工作,但是将内容发送到 docpad 对象让我失望
class mongoPlugin extends BasePlugin
name: 'mongo'
# Fetch list of Gigs
getGigsData: (opts) ->
mongoose.connect ('mongodb://localhost/test')
db = mongoose.connection;
db.on 'error', console.error.bind(console, 'connection error:')
db.once 'open', () ->
gigsSchema = mongoose.Schema {
date : String,
location : String
}
Gigs = mongoose.model 'Gigs', gigsSchema
Gigs.find {}, (err, gigs) ->
mongoose.connection.close()
if err then console.error "db error"
else
console.dir gigs
opts["getGigsData"] = gigs
opts.templateData["getGigsData"] = gigs
return gigs
extendTemplateData: (opts) ->
opts.templateData["getGigsData"] = @getGigsData()
使用 node-inspector 并通过编辑 docpad.coffee 触发重新生成,我可以看到 opts 有一个字段 templateData,但它是空的,并且与 docpad.templateData 非常不同,所以我在插件。我可以看到其他人在 { } 中放了一个名字,但我不知道这是做什么的。
完成插件代码后,我看到我的数据库数据成为了一个承诺的参数,所以也许这就是它应该与 docpad.config.templateData 重新集成的地方,但实际上这似乎不会发生
【问题讨论】: