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ď č. 1Neexistuje ž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