我試圖構建一個簡單的插件,以便從Mongo獲取數據到一個可以在呈現時迭代的對象。完整的代碼在我的project中,但其實質是嘗試模仿feedr示例失敗。我知道貓鼬的東西是工作作爲控制檯日誌的作品,但得到發送到docpad對象的內容被擊敗我Docpad:通過貓鼬回調使用extendTemplateData
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()
使用節點檢查和編輯docpad.coffee觸發再生,我可以看到, opts有一個字段templateData,但它是空的,並且與docpad.templateData非常不同,所以我在插件中拾取了錯誤的對象。我可以看到其他人做了一個在{}中放置一個名字的伎倆,但我不知道它會做什麼。
完成插件代碼我看到我的數據庫中的數據變爲參數傳遞給一個承諾,所以也許這就是它應該與docpad.config.templateData重新整合,但似乎並沒有在實踐中
發生後
那太好了。代碼需要一個final()來運行。 –