0

我希望我的 docpad 网站使用 mongoDb 而不是文件系统来存储文档(Heroku 部署)。有这个的docpad插件吗?我似乎找不到让 docpad 使用 mongo 的直接方法。我已经查看过需要对 Docpad 持久性的解释——但这并没有给出实现连接的实际技术细节

4

2 回答 2

1

我不知道任何 mongodb 插件。最简单的起点可能是使用tubmlr 插件并将其调整为从 mongodb 中读取,而不是从 tumblr rss/atom 提要中读取。

该插件的代码并不是非常复杂。首先,您希望将fetchTumblrData函数替换为从 MongoDB 获取数据的函数,然后您希望调整populateCollections 中的代码以将该数据转换为虚拟文档。

于 2013-10-22T14:31:39.920 回答
0

我一直在研究一些现在可以从 Mongodb 读取并返回可以呈现为文档的对象的代码。我还尝试编写一些代码来为数据库的基本编辑提供后端,但更新后的重新生成尚未起作用(尽管可能是在您阅读本文时!)。

关键部分(感谢 BALupton 帮助解决回调复杂性)如下。

extendTemplateData: (opts,next) ->
    config = @getConfig()

    mongoose.connect(config.uristring)          
    db = mongoose.connection

    db.on 'error', (err) ->
        docpad.error(err)  # you may want to change this to `return next(err)`

    db.once 'open', ->
        queries = config.queries
        queryCount = 0
        totalQueries = Object.keys(queries).length

        for index, query of queries
            ((indexClosure) ->
                Dbdata.find query.predicate, (err, data) ->
                    opts.templateData[indexClosure] = data

                    if (++queryCount == totalQueries)
                        mongoose.connection.close()
                        return next(err) if err
                        return next(null, data)
            )(index)
    # Chain
    @

https://github.com/simonh1000/docpad-plugin-mongo

于 2014-02-23T15:22:20.527 回答