簡體   English   中英

使用node.js運行數據庫遷移(mongodb)

[英]Run database migration (mongodb) with node.js

我正在尋找一個進行mongo數據庫遷移的節點模塊。 到目前為止,我發現mongo-migrate ,但功能還不夠強大。 (總比沒有好,但是我需要更多,我習慣於使用真正強大的Ruby遷移!)

幾周前,我又發現了一個強大的功能,但不處理mongoDb,僅處理MySQL,PostGre等。

您知道某個模塊或可以幫助我的東西嗎? 我的意思是,我不是第一個要處理數據庫遷移的人,您如何管理它? 我的項目很大,我需要控制。

這里是我到目前為止所做的一個例子:

* 0010-init_category_table.js *

var mongodb = require('mongodb');

exports.up = function(db, next){

    var documentName = 'category';
    var collection = mongodb.Collection(db, documentName);
    var index;
    var indexOptions;

    /**
     * Create indexes.
     */
    index = { "code": 1 };
    indexOptions = { unique: true };
    collection.ensureIndex( index, {unique: true, w: 1}, function(error, data){
        console.log(error ? error : documentName + ': [ensureIndex] ' + JSON.stringify(index) + JSON.stringify(indexOptions));
    });

    index = { "name": 1 };
    indexOptions = { unique: true };
    collection.ensureIndex( index, {unique: true, w: 1}, function(error, data){
        console.log(error ? error : documentName + ': [ensureIndex] ' + JSON.stringify(index) + JSON.stringify(indexOptions));
    });

    /**
     * Create basic data.
     */
    collection.insert({
        code: 'a',
        name: 'languageStatus'
    }, {w: 1}, function(error, data){
        console.log(error ? error : documentName + ': [insert] ' + JSON.stringify(data));
    });
    collection.insert({
        code: 'b',
        name: 'accessName'
    }, {w: 1}, function(error, data){
        console.log(error ? error : documentName + ': [insert] ' + JSON.stringify(data));
    });
    collection.insert({
        code: 'c',
        name: 'roleName'
    }, {w: 1}, function(error, data){
        console.log(error ? error : documentName + ': [insert] ' + JSON.stringify(data));
    });
    collection.insert({
        code: 'd',
        name: 'translationStatus'
    }, {w: 1}, function(error, data){
        console.log(error ? error : documentName + ': [insert] ' + JSON.stringify(data));
    });

    /**
     * Display index information.
     */
    collection.indexInformation(function(error, data){
        console.log(error ? error : documentName + ': [indexes] ' + JSON.stringify(data));
    });

    next();
};

exports.down = function(db, next){
    var documentName = 'category';
    var document = mongodb.Collection(db, documentName);

    var query = {
        $or: [
            {name: 'languageStatus'},
            {name: 'accessName'},
            {name: 'roleName'},
            {name: 'translationStatus'}
        ]
    };
    document.find(query, function(error, data){
        data.each(function(error, data){
            document.remove(data, {w: 1}, function(error, number){
                console.log(error ? error : documentName + ': [remove] (' + number + ') ' + JSON.stringify(data));
            })
        });
    });

    next();
};

我剛剛開發了一個: https : //github.com/eberhara/mongration-您也可以在npm上找到它。

我們需要一個適用於mongodb的良好節點遷移框架,但找不到任何框架-因此我們構建了一個框架。

它具有比常規遷移框架更好的功能:

  • 校驗和(如果先前運行的遷移與其舊版本不匹配,則會發出錯誤)
  • 保持遷移到mongo的狀態(沒有常規狀態文件)
  • 完全支持副本集
  • 自動處理回滾(開發人員必須指定回滾過程)
  • 能夠同時運行多個遷移(同步或異步)
  • 能夠同時針對不同的數據庫運行遷移

看一下https://github.com/emirotin/mongodb-migrations,它似乎更具有功能豐富,成熟和維護的特點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM