我们正在开发一个web应用程序,我们使用mongodb作为我们的数据库。我们的应用是关于现场管理解决方案。
因此,在我们的应用程序中,数据不断地发生变化,例如,Admin可能希望向"Employee“Schema添加一个新字段或删除它,应用程序中的许多其他模式也是如此。
假设在启动应用程序之后,我们可能引入一个新服务,希望将其添加到数据库中,但是这里所需的字段与以前的服务不同,在事务模式中,我们可能希望删除或添加一个新字段。
下一个层次是在前端有一个模式构建器,在这里我们创建、编辑和删除基于需求的新模式,而不是改变代码,它必须是动态的。现在,我应该如何在不重新启动和删除数据库的情况下处理生产服务器中的这些更改。模式构建器也将具有关系数据.
如何处理动态模式和中间件功能的关系数据?
此外,我在MongoDB文档中看到,在生产模式下,我们将禁用autoIndex。那么,另一种方法是什么。
另外,在模式中,有时我们可能不得不根据requriements更改SchemaOptions (例如:unique, minLength, maxLength, requried, etc., )。
我尝试了很多方法来实现这一点,但是我想不出一种正确的方法来实现它。dropIndex不工作,createIndex不工作。
每当我对模式进行更改时,我要么必须删除数据库,要么重新启动服务器。
另外,在我保存了100个文档后,将其保存到集合中,其中一个字段为false,如果我更改为true,那么如何处理以前保存的文档,这些文档被保存为false?
有人能给我一个最好的实现例子吗?可以做我的工作吗?或者我应该为Nodejs使用JOI和MongoDB驱动程序,而不是猫鼬?
谢谢。
发布于 2020-01-06 06:58:25
喜欢这个问题,它基本上为我构建了这个应用程序
不管怎么说,你在这里问了很多问题,而不是一个简单的答案,不过,我会给你一个起点。
首先,我要远离猫鼬。您将需要动态模式,而Mongoose的全部内容都是拥有一个模式。
使用MongoDB本机驱动程序和Joi进行对象验证。
我建议首先计算出文档(对象)基键:将始终存在的值,例如_id
然后,我将构建端点,用于使用Joi创建/更新对象验证,并跟踪版本的跟踪,甚至可能跟踪创建时使用的每个文档(对象)的验证。
然后将对象验证方法存储在数据库中或您调用的服务器上,这样,当创建和更新对象时,您可以访问动态对象验证。
不幸的是,你问了很多问题,所以这些只是我头上的几个想法。希望能帮上忙。我也写了一篇关于猫鼬的博文:
https://stackoverflow.com/questions/59607385
复制相似问题