Docpad并连接到MongoDb

时间:2013-10-22 12:14:34

标签: node.js mongodb docpad

我希望我的docpad网站使用mongoDb而不是文件系统来存储文件(Heroku部署)。这是一个docpad插件吗?我似乎无法找到让docpad使用mongo的直接方式。我已经查看了Need explanation for Docpad persistence - 但这并未提供实现连接的实际技术细节

2 个答案:

答案 0 :(得分:1)

我不知道任何mongodb插件。最简单的出发点可能是采用tubmlr plugin并使其适应读取形式mongodb而不是tumblr rss / atom feed。

该插件的代码并不十分复杂。首先,您希望将fetchTumblrData函数替换为从MongoDB获取数据的函数,然后您需要调整the code in populateCollections以将该数据转换为虚拟文档。

答案 1 :(得分:0)

我一直在研究一些现在可以从Mongodb读取的代码并返回一个可以渲染到docs中的对象。我还尝试编写一些代码来为数据库的基本编辑提供后端,但更新后的重新生效还没有起作用(尽管可能是在你读这篇文章的时候!)。

关键部分(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