Как правильно загрузить предварительно собранные базы данных SQlite с PouchDB или без него в приложении React? - PullRequest
0 голосов
/ 23 февраля 2019

В настоящее время я пишу приложение React и борюсь с простым чтением из базы данных SQlite.

Редактировать из-за неясного вопроса :

*** Цель состоит в том, чтобы читать из базы данных без какого-либо бэкэнда, потому что он должен читать из базы данных, даже когда онвне форума.

*** Я стремлюсь к ОДНОМУ ВРЕМЕНИ преобразования файла, а затем просто запросы pouchdb в автономном режиме.Но я не хочу делать это вручную, потому что существует около 6k + реестров.

*** Или запросы SQL из браузера без каких-либо API, но мне нужно поддерживать Internet Explorer, поэтому WebSQL не вариант,Я пробовал библиотеку sqlite3, но не могу заставить ее работать с приложением Create React.

Я пытался использовать PouchDB для чтения файла, но я пришел к выводу, что этоНевозможно PRELOAD файл SQlite с PouchDB без использования Cordova (мне это неудобно, я не хочу, чтобы работали какие-либо серверы) или даже с каким-либо адаптером.

Так это правильный способ делать вещи?

Есть ли способ, чтобы я не потерял свои данные .db, и мне пришлось бы преобразовать их все вручную?

Должен ли я забыть о поддержке этих функций в IE?

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Попробуйте это:

sqlite3 example "DROP TABLE IF EXISTS some_table;";
sqlite3 example "CREATE TABLE IF NOT EXISTS some_table (id INTEGER PRIMARY KEY AUTOINCREMENT, anattr VARCHAR, anotherattr VARCHAR);";
sqlite3 example "INSERT INTO some_table VALUES (NULL, '1stAttr', 'AttrA');";
sqlite3 example "INSERT INTO some_table VALUES (NULL, '2ndAttr', 'AttrB');";

## Create three JSON fragment files
sqlite3 example ".output result_prefix.json" "SELECT '{ \"docs\": ['";
sqlite3 example ".output rslt.json" "SELECT '{ \"_id\": \"someTable_' || SUBSTR(\"000000000\" || id, LENGTH(\"000000000\" || id) - 8, 9) || '\", \"anattr\": \"' || anattr || '\", \"anotherattr\": \"' || anotherattr || '\" },' FROM some_table;";
sqlite3 example ".output result_suffix.json" "SELECT '] }'";

## strip trailing comma of last record
sed -i '$ s/.$//' rslt.json;

## concatenate to a single file
cat result_prefix.json rslt.json result_suffix.json > result.json;

cat result.json;

Вы можете просто вставить вышеуказанные строки в (unix) командную строку, увидев вывод:

{ "docs": [
{ "_id": "someTable_000000001", "anattr": "1stAttr", "anotherattr": "AttrA" },
{ "_id": "someTable_000000002", "anattr": "2ndAttr", "anotherattr": "AttrB" }
] }

Если у вас есть jq Установлено, вы можете сделать вместо этого ...

cat result.json | jq .

... Получение:

{
  "docs": [
    {
      "_id": "someTable_000000001",
      "anattr": "1stAttr",
      "anotherattr": "AttrA"
    },
    {
      "_id": "someTable_000000002",
      "anattr": "2ndAttr",
      "anotherattr": "AttrB"
    }
  ]
}

Вы найдете пример того, как быстро инициализировать PouchDB из файлов JSON в части 2из сообщения в блоге Готовые базы данных с PouchDB .

Итак, если у вас есть сервер CouchDB, вы можете сделать следующее:

export COUCH_DB=example;
export COUCH_URL= *** specify yours here ***;
export FILE=result.json;

## Drop database
curl -X DELETE ${COUCH_URL}/${COUCH_DB};

## Create database
curl -X PUT ${COUCH_URL}/${COUCH_DB};

## Load database from JSON file
curl -H "Content-type: application/json" -X POST "${COUCH_URL}/${COUCH_DB}/_bulk_docs"  -d @${FILE};

## Extract database with meta data to PouchDB initialization file
pouchdb-dump ${COUCH_URL}/${COUCH_DB} > example.json

## Inspect PouchDB initialization file
cat example.json | jq .

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

0 голосов
/ 24 февраля 2019

Поскольку Couch / Pouch-DB являются документно-ориентированными БД, все записи, также называемые документами, представляют собой только JSON, или JS-объекты.В моем приложении RN, когда я столкнулся с подобной задачей, я просто поместил все документы, которые я хотел «предварительно заполнить» в PouchDB, в массив JS-объектов, импортировал его как модуль в мое приложение и затем записал их во время инициализации приложения в PDB как необходимые документы.,Это все предпопуляция.Как экспортировать записи базы данных SQL в JSON - вы сами решаете, конечно, это зависит от структуры исходной базы данных и логики данных, которой вы хотите быть в PDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...