/ / Ako importovať disk sails.js.d.d do mongodbu - json, node.js, mongodb, sails.js

Ako importovať sails.js disk.db do mongodb - json, node.js, mongodb, sails.js

Takže používam aplikáciu nodejs sailsjs webový rámec. Keď sa vyvíjam, mám adaptér nastavený na plachtový disk. Vzorové údaje z disk.db je ako

{
"data": {
"authentication": [
{
"user_id": 1,
"username": "user1",
"encrypted_password": "password here",
"createdAt": "2014-05-12T07:40:24.901Z",
"updatedAt": "2014-08-18T19:37:22.851Z",
"id": 1,
"email": "user1@email.com"
}
],
"user": [
{
"name": "user0001",
"email": "user1@email.com",
"role": [
"admin"
],
"phone": [
{}
],
"status": "Active",
"createdAt": "2014-05-12T07:48:11.028Z",
"updatedAt": "2014-05-24T08:12:41.646Z",
"id": 1,
"username": "user1"
}
]
}
}

Toto funguje perfektne na mojom lokálnom stroji. Teraz som pripravený ju nasadiť na výrobu a používať mongodb ako svoju databázu. Mám všetky nastavenia pripojenia a môžem sa úspešne pripojiť na svoju db.

Moja otázka znie: Existuje spôsob, ako môžem importovať svoju databázu lokálneho disku (disk.db) na mongodb pri udržiavaní môjho formátu údajov alebo zbierok údajov json? Alebo musím vytvoriť svoje zbierky na mongodbe ručne a importovať každú kolekciu?

odpovede:

4 pre odpoveď č. 1

Neexistuje žiadny nástroj alebo oficiálny spôsob, ako to urobiťmigrácie s plachtami. Podľa toho, koľko modelov máte a aké únavné by bolo napísať skript na migráciu vecí, jednou z možností je zrkadlenie vašich modelov - to znamená, ak máte User.js, vytvorte nový model UserNew.js vyzerá to takto:

module.exports = {

connection: "mongoDbConnection",
tableName: "user",
attributes: <same as User.js attributes>

}

a potom vo vašom config / bootstrap.js postup:

User.find().exec(function(err, users) {
UserNew.create(users).exec(...);
}

previesť ich.

Bola by to jednorazová vec, po ktorej by ste mohli originál opustiť User.js a premenovať UserNew.js na User.js, Docela hackerské, ale opäť v závislosti od toho, o koľko údajov hovoríme, môže to byť najrýchlejšia možnosť!


0 pre odpoveď č. 2

Staval som na odpovedi od sgress454 a otočil som ju. Namiesto NewUser som vytvoril model OldUserLocation.js.

module.exports = {
connection: "localDiskDb",
tableName: "user",
attributes: {
//same as in User.js
}

}

A v predvolenom modeli som uviedol mongo DB.

Vo funkcii bootstrap som pridal toto:

User.find().exec(function(err, users){
if(!err && users.length == 0){
OldUserLocation.find().exec(function(err, oldUsers) {
if(!err && oldUsers.length >0){
User.create(oldUsers).exec(function (err){
cb();
});
}
else{
cb();
}
});
}
else{
cb();
}
});

Jednoducho povedané, ak užívateľský model v mongo DB nemá žiadnych používateľov, potom sa pokúsim importovať z localdisk db. Ak už má používateľov, predpokladám, že import je už hotový.


0 pre odpoveď č. 3

Ďalším nebezpečným spôsobom, ktorý vidím, je:

  • otvorené .tmp/localDiskDb.db
  • skopírujte objekt
  • spustiť POST dotaz pomocou poštár https://www.getpostman.com/apps
  • nastavte dotaz na POST
  • nastavte koncovú webovú adresu na karte „telo“, vyberte „surový“, „JSON“ vložte objekt do poľa
  • stlačte tlačidlo Odoslať

hlúpy, opakuj