当前位置: 首页 > 知识库问答 >
问题:

Node.js结合猫鼬和帆水线

房新翰
2023-03-14

我正在Node上做一个基于开源微服务的项目。js。

有些微服务非常薄,只与MongoDB交互,所以我没有在那里使用Sails,而是更喜欢直接使用Mongoose。因此,我为需要在mongo中持久化的每个对象实现了mongoose模式。

我还将在其他一些微服务中使用Sails.js,因此我必须为我想要持久化的对象实现Waterline类型的模式

问题是模式的重复,我觉得这没用。

我希望在所有服务中使用一种模式。

现在有3种选择:

>

  • 这是一种连接模式(我不知道)的神奇方法,可以让两个世界同时工作(可能性最小的选项)。

    在所有的微服务中使用水线,无论我是否使用帆。因此,系统中有1个模式类型。

    迫使航行。js使用mongoose适配器而不是Waterline,然后实现一些内部使用mongoose的CRUD数据访问层(DAL),并在任何地方使用它来访问数据库。因此,猫鼬模式将贯穿整个系统。但是我放弃了水线封装功能,如果将来我想更改DB,我会遇到麻烦。

    我也可以在我的应用程序中妥协和复制模式,但这是最后的手段,因为我相信必须有一些解决方案来解决这个问题。

  • 共有2个答案

    贺懿轩
    2023-03-14

    我可以想到以下几点来全力以赴:

    • 将通用部分,如Sails模型,放在Sails项目中并将其推送到(私有)npm包
    • 使用https://github.com/tjwebb/marlinspike或其他帆钩在您需要的每个实例中导入它们。

    我没有尝试过这一点,但正在为将来类似的步骤做准备。

    我也看到了这个问题:https://github.com/tjwebb/marlinspike/issues/4

    何兴学
    2023-03-14

    不管是谁考虑水线对猫鼬。。。直到今天,选择猫鼬。

    吃水线让我们头疼,而猫鼬是如此的光滑和直截了当。

     类似资料:
    • 问题内容: 是否有人使用过nodejs模块“ deferred”和“ mongoose”?我试图让deferred.promisify方法可以在猫鼬模型的函数上工作,以便我可以轻松地将它们链接起来,但是会遇到一些麻烦。具体来说,我想对和函数进行赋值处理,以便可以通过ObjectID链接查找另一个文档引用的一个文档。 这就是我所拥有的:https : //gist.github.com/332182

    • 问题内容: 我需要使用猫鼬插入一些数据,但是集合的名称由用户在插入时提供,因此我首先必须检查集合是否存在。 我知道如何检查集合是否存在的方式是通过查询集合。我可以看到3种可行的方法。 找到一种使用猫鼬查询的方法(也许定义一个与数据库中的模式匹配的模式)。 从猫鼬获取一些底层的node-mongodb-native对象并手动执行查询。无论如何,这是我想学习的方法。 使用node-mongodb-na

    • 问题内容: 我有一个使用名为Todo的模型的路由设置,如下所示: 但是,todos.length始终为0,因为它找不到任何结果。当我跑步时: 我确定我已连接到同一数据库。我可以在mongod控制台中看到连接。我的连接位于config / db.js文件中: 我的server.js中的连接如下: 在Mongo Shell中,我得到1个结果。我期望此结果将由find查询返回。有什么我想念的吗?我正在使

    • 问题内容: 我有一个简单的猫鼬模型,在其上我调用find,最大限制为100,它调用完成的回调: 如果我将此行修改为(或更高的数字),则永远不会调用该回调 任何地方都没有错误,数据库保持正常运行,但是此节点应用程序冻结,必须重新启动。 如果我进入服务器以连接到相同的数据库并连接到mongo shell,则在同一集合上,find({})会在不到一秒的时间内返回所有〜700个集合。当我将同一数据库克隆到

    • 问题内容: 我想在Monoose中将两个OR查询与AND结合在一起,例如以下SQL语句: 我在NodeJS模块中尝试了此操作,该模块仅从主应用程序获取模型对象: 但这是行不通的,所有OR条件都将像下面的SQL语句一样连接在一起: 如何在猫鼬中结合AND 和AND 的两个条件? 问题答案: 直接按以下方式创建查询对象可能是最简单的: 但是,您也可以使用最新的3.x Mongoose版本中提供的帮助程

    • 问题内容: 以上似乎不起作用。记录仍然存在。 有人可以修复吗? 问题答案: 是一系列文档。所以它没有方法 您可以分别迭代和删除数组中的每个文档。 或-由于看起来您是通过(可能)唯一的id使用来查找文档的- 而不是。