【问题标题】:Apostrophe CMS running with Dynamo DB与 Dynamo DB 一起运行的撇号 CMS
【发布时间】:2019-06-28 13:44:10
【问题描述】:

我们想在 AWS 中运行 Apostrophe,但是我们的策略是使用 Dynamo DB 来满足我们的数据库需求。 这可能吗?

开启https://docs.apostrophecms.org/apostrophe/tutorials/intermediate/accessing-the-database-directly#making-your-own-database-connections

上面写着:

也许您根本不想使用 MongoDB。没关系。没人的 阻止您为您的数据库建立自己的数据库连接 项目特定代码。

我认为这意味着它是可能的。

我已经尝试扩展 apostrophe-db 模块来调用

self.apos.db = new AWS.DynamoDB();

但网站不会初始化。

如果可能的话,任何尝试过的人都可以举一些例子来说明如何做到这一点。

谢谢

【问题讨论】:

    标签: amazon-dynamodb apostrophe-cms


    【解决方案1】:

    如果您想让基本的 Apostrophe-CMS 模块使用具有 MongoDB 之外的语法的数据库,您需要做很多工作。除非我大错特错,否则 Dynamo DB 不使用与 MongoDB 相同的查询语法。 Apostrophe-CMS 不包含动态切换到其他数据库的能力 - 您需要在几个 Apostrophe 模块中重写大量代码才能完成此操作,因为 Apostrophe 是为与 MongoDB 一起工作而编写的。例如,apostrophe-docs 模块提供了对 Apostrophe 用于存储其大部分数据的文档集合的访问权限。您可以在此处查看文档模块的设置方式:https://github.com/apostrophecms/apostrophe/blob/master/lib/modules/apostrophe-docs/lib/api.js

    请注意该模块中有多少代码使用特定于 MongoDB 的查询语法。由于 Apostrophe 出色的继承系统,可能会覆盖 Apostrophe 用于访问 MongoDB 的每一段代码,并将其替换为访问另一个数据库的代码,但这可能是一项难以置信的工作量。

    您在问题中引用的行似乎是指仅在您的自定义模块内连接到另一个数据库。例如,如果您想创建一个从 SQL 数据库而不是从 Apostrope mongodb 文档集合中提取的 Comments 小部件,您可以引入像 node-mssql 这样的 NPM 包并覆盖其中的许多默认 Apostrophe-CMS 小部件行为你的评论模块。这将允许您为该特定模块提取所需的任何数据,但 Apostrophe 仍需要从其 MongoDB 实例中提取数据。

    【讨论】:

    • 约瑟夫的回答是正确的。此外,MongoDB 是 Apostrophe 文档化 API 的一部分,因为直接更新 MongoDB 是允许且司空见惯的,例如访问 $set 之类的功能。我们允许您注入自己的数据库对象或覆盖 connectToMongoDB,但您注入的对象必须在所有方面与 MongoDB 的 API 100% 兼容。如果禁用 Apostrophe 的文本搜索索引,亚马逊新的 MongoDB 兼容数据库(不是 DynamoDB)可能会工作。
    • 感谢您的回复。这就是我的想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多