更新实时mongoose js应用程序

时间:2013-07-09 22:46:57

标签: javascript node.js mongodb express mongoose

我有一个非常基本的问题,我试过谷歌,但我真的找不到任何东西。

我正在尝试使用mongoose js,我想知道如何更新实时应用程序。

比如说我在我的node.js应用程序中定义了一个模式,并在我的app.js文件中定义了一个模式:

...
var LibrarySchema = new mongoose.Schema({
    address: {type: String, required: true},
    books: [{
        title: {type: String, required: true}
    }]
});

var libraryModel = mongoose.model('Library', LibrarySchema);
...

现在我在云中的某个AWS实例上运行服务器。用户在那里,使用该网站。在某些时候我决定每本书都应该有一个ISBN号,所以我需要更新Schema。

现在有什么选择?我是否在服务器上编辑app.js文件然后重新启动节点js应用程序?或者有没有办法在生产过程中以最小化停机时间的方式编辑模式?

谢谢!

2 个答案:

答案 0 :(得分:0)

mongodb与您的应用完全分开,因此只要您不使用此

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); 

您可以使用单独的应用程序更新数据库,只要主应用程序知道如何有意义地使用新数据,您就不必重新启动它或更改任何内容。

答案 1 :(得分:0)

您可以在Mongoose中更改架构并重新加载应用程序。如果您有多个服务器实例,则可以在不中断用户的情况下逐步更改它。但是你应该小心,如何处理新架构。旧实例对新项目一无所知,所以没关系,但新项目应检查新项目并处理不存在的情况。如果更改很小,最好在迁移后使用合理的默认值来完成数据库中缺少的项目,如果更改更激进,则可以同时使用模式的不同版本并在模式中具有版本标识符。