CMS Apostrophe работает с БД Динамо - PullRequest
0 голосов
/ 28 июня 2019

Мы хотели бы запустить Apostrophe в AWS, однако наша политика заключается в использовании 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();

Но сайт не инициализируется.

Может кто-нибудь, кто пытался это сделать, приведите несколько примеров, как это сделать, если это возможно.

Спасибо

1 Ответ

1 голос
/ 28 июня 2019

Если вы хотите, чтобы базовые модули Apostrophe-CMS использовали базу данных с синтаксисом, отличным от MongoDB, вам потребовалось бы много работы.Если я не сильно ошибаюсь, Dynamo DB не использует тот же синтаксис запроса, что и MongoDB.Apostrophe-CMS не имеет возможности переключаться на другие базы данных на лету - вам нужно переписать большую часть кода в нескольких модулях Apostrophe, чтобы выполнить это, поскольку Apostrophe написан для работы с MongoDB.Например, модуль apostrophe-docs дает доступ к коллекции документов, которую Apostrophe использует для хранения большей части своих данных.Здесь вы можете увидеть, как настроен модуль docs: https://github.com/apostrophecms/apostrophe/blob/master/lib/modules/apostrophe-docs/lib/api.js

Обратите внимание, сколько кода в этом модуле использует синтаксис запроса, специфичный для MongoDB.Из-за прекрасной системы наследования Apostrophe, возможно, будет возможно перезаписать каждый бит кода, который Apostrophe использует для доступа к MongoDB, и заменить его кодом для доступа к другой базе данных, но, вероятно, это будет невероятный объем работы.

Строка, на которую вы ссылаетесь в своем вопросе, похоже, относится к подключению к другой базе данных только внутри ваших пользовательских модулей.Например, если вы хотите создать виджет «Комментарии», который извлекается из базы данных SQL, а не из коллекции документов Apostrope mongodb, вы можете добавить пакет NPM, такой как node-mssql, и переопределить множество поведения виджета Apostrophe-CMS по умолчанию внутриваш модуль комментариев.Это позволит вам извлекать любые данные, которые вы хотите для этого конкретного модуля, но Apostrophe все равно придется извлекать данные из своего экземпляра MongoDB.

...