我有一个非常基本的问题,我试过谷歌,但我真的找不到任何东西。
我正在尝试使用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应用程序?或者有没有办法在生产过程中以最小化停机时间的方式编辑模式?
谢谢!
答案 0 :(得分:0)
mongodb与您的应用完全分开,因此只要您不使用此
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
您可以使用单独的应用程序更新数据库,只要主应用程序知道如何有意义地使用新数据,您就不必重新启动它或更改任何内容。
答案 1 :(得分:0)
您可以在Mongoose中更改架构并重新加载应用程序。如果您有多个服务器实例,则可以在不中断用户的情况下逐步更改它。但是你应该小心,如何处理新架构。旧实例对新项目一无所知,所以没关系,但新项目应检查新项目并处理不存在的情况。如果更改很小,最好在迁移后使用合理的默认值来完成数据库中缺少的项目,如果更改更激进,则可以同时使用模式的不同版本并在模式中具有版本标识符。