Используйте базу данных JSON с Node & React

Я разрабатываю веб-приложение с помощью Node.js и React.

Файл JSON используется для хранения текстовых данных и репозитория для изображений, которые я использую. Он модифицируется Node.js, а данные обрабатываются React.

Я хотел бы знать, как правильно работать с базой данных JSON. Могу ли я хранить файл JSON локально и отображать его с помощью React вне папки src, или я должен хранить файл JSON на сервере (Node.js) и анализировать его в React с помощью запросов? И как?

Спасибо

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
0
2 618
3

Ответы 3

Начиная с Node v8.9.1, вы можете получить доступ к файлу JSON с помощью простого запроса.

var json = require('/location/of/file/file.json');

Что касается местоположения, придерживайтесь его вне src, потому что он не соблюдается. Я обычно кладу его в корневую папку под названием config.

Файл должен храниться на сервере, поскольку вы используете узел для получения от него данных, и там могут быть конфиденциальные данные.

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

Да, я пробовал это решение, но я использовал приложение create-response-app, и оно запрещает импорт из-за пределов папки src ...

Pol Grisart 16.07.2018 13:30

Мне кажется, что вы делаете статическое приложение (например, блог). Если вы выполняете рендеринг на стороне сервера, вам может просто потребоваться JSON db, а затем гидратировать DOM. В противном случае вы можете открыть конечную точку API и запросить JSON, а React на стороне клиента обработает его. Надеюсь это поможет! ?

Нет, я делаю динамическое приложение. Клиент может изменять данные, и данные отображаются в соответствии с.

Pol Grisart 16.07.2018 13:27

Не следует использовать файл JSON напрямую для хранения информации.

Попробуйте использовать какую-нибудь технологию NoSql DB, предназначенную для этого, например MongoDB. Вы можете использовать его как услугу бесплатно на сайте mlab.com для хранения до 500 МБ данных.

Есть много других поставщиков, например mongodb.com/cloud/atlas, от создателей MongoDB.

Да, я понимаю, но мне нужно закончить свой проект очень быстро. У вас есть решение, использующее файл JSON?

Pol Grisart 16.07.2018 13:40

Начать работу с mongodb очень быстро. Если вместо этого вы используете файл json, вам придется построить всю свою логику чтения и записи, что займет много времени. MongoDB поставляется со всем этим в своем ядре, и команды, которые вам нужно написать, довольно просты. Поищите что-то вроде «начало работы с узлом mongodb», и вы найдете несколько руководств по сути. Я почти уверен, что меньше чем за один день вы сможете делать то, что хотите.

Felipe Micali 18.07.2018 11:37

Здесь вы можете найти действительно простой учебник, показывающий, как реализовать MongoDB в узле с помощью Mongoose, модуля для узла, который манипулирует исходным модулем MongoDB для узла, что упрощает работу: code.tutsplus.com/articles/…

Felipe Micali 18.07.2018 11:40

Хорошо, я попробую использовать Mongo для базы данных JSON. Что касается изображений, которые мне нужно сохранить, я думаю, я могу хранить их прямо на моем сервере и отправлять своему клиенту, так как http-запросы? Спасибо

Pol Grisart 19.07.2018 09:14

Да, вы можете хранить его на своем сервере, но вы должны хранить его в CDN, например Amazon S3, с помощью модуля узла aws-sdk. Делая это, вы делегируете запросы изображений и передачу данных на сторонний сервер (от Amazon) и освобождаете свой сервер узла от использования ОЗУ / ЦП, чтобы сосредоточиться на ваших основных сервисах. Кроме того, узел работает в однопоточной среде, и все остальные входящие запросы не будут запускаться, пока не будут завершены все текущие запросы, включая передачу изображений.

Felipe Micali 19.07.2018 12:32

Другие вопросы по теме