【问题标题】:How to handle dynamic database with mongoose?如何用猫鼬处理动态数据库?
【发布时间】:2020-04-23 17:14:31
【问题描述】:

我们正在开发一个使用 mongodb 作为数据库的 Web 应用程序。我们的应用程序是关于现场管理解决方案的。

因此,在我们的应用程序中,数据会不断变化,例如,管理员可能想要将新字段添加到“员工”模式或将其删除,应用程序中的许多其他模式也是如此。

假设,在我们启动应用程序后,我们可能会引入一个新服务,我们希望将其添加到我们的数据库中,但是,这里所需的字段与以前的服务不同,并且在事务模式中我们可能想要删除或添加一个新的领域。

下一个层次是我们在前端有一个模式构建器,我们可以根据需求创建、编辑和删除新模式,而不是更改代码,它必须是动态的。现在我应该如何在不重新启动和删除数据库的情况下处理生产服务器中的这些更改。 架构构建器也会有关系数据。

mongoose中如何处理具有动态模式和中间件功能的关系数据?

另外,我在 MongoDB 文档中看到,在生产模式下,我们将禁用 autoIndex。那么有什么替代方法。

同样在架构中,有时我们可能必须根据要求更改 SchemaOptions,例如:unique, minLength, maxLength, requried, etc.,

我尝试了很多方法来实现这一点,但我无法找到一种正确的方法。 dropIndex 不起作用,createIndex 不起作用。

每当我对架构进行更改时,我都必须删除数据库或重新启动服务器。

另外,在我将 100 个文档保存到集合中,其中一个字段为 false 唯一,如果我将 unique 更改为 true,如何处理以前保存为 false 的唯一文档?

谁能给我最好的实施示例? 猫鼬可以做我的工作吗?或者我应该在没有猫鼬的情况下使用 JOI 和 MongoDB Driver for Nodejs?

谢谢。

【问题讨论】:

  • 好的,你的问题有多个问题,而且你不需要提供有问题的Skype,因为这里用户通常不会编写完整的代码,他们解决了几个问题(也许开始讨论聊天),请用特定问题更新您的问题(否则此问题很有可能被关闭或搁置)或仅在之前未回答的情况下提出多个问题:-)

标签: node.js database mongodb mongoose database-design


【解决方案1】:

喜欢这个问题,它基本上为我构建了应用程序???

不管你在这里问了很多问题,这不是一个简单的答案可以回答的问题,不过,我会给你一个开始的地方。

首先我会避开猫鼬。您将需要动态架构,而 Mongoose 就是要拥有一个架构。

使用 MongoDB Native Driver 和 Joi 进行对象验证。

我建议从找出文档(对象)的基键开始:永远存在的值,例如 _id

然后,我将构建端点以使用 Joi 创建/更新对象验证并跟踪版本,甚至可能跟踪每个文档(对象)在创建时使用的验证。

然后将对象验证方法存储在数据库或您调用的服务器上,这样当创建和更新对象时,您就可以访问动态对象验证。

不幸的是,你问了很多,所以这些只是我脑海中的一些想法。我希望它有所帮助。我也写过一篇关于猫鼬的博文:

https://medium.com/better-programming/mongoose-vs-the-mongodb-node-driver-7dc59f00a5dd?source=friends_link&sk=94055c33491efc5578169c8dba586f44

【讨论】:

    猜你喜欢
    • 2017-01-04
    • 1970-01-01
    • 2021-11-16
    • 2019-05-28
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2012-07-30
    • 2014-10-17
    相关资源
    最近更新 更多