1

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

我正在尝试 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 应用程序?或者有没有办法在生产中以最小化停机时间的方式编辑模式?

谢谢!!

4

2 回答 2

0

mongodb 与您的应用程序完全分开,只要您不使用它

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

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

于 2013-07-10T01:17:52.283 回答
0

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

于 2013-07-10T09:56:10.503 回答