Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongoose模式和通过python插入_Python_Node.js_Mongodb_Mongoose - Fatal编程技术网

Mongoose模式和通过python插入

Mongoose模式和通过python插入,python,node.js,mongodb,mongoose,Python,Node.js,Mongodb,Mongoose,我正在为一个WebApp使用Nodejs服务器,Mongoose充当ORM 我有一些钩子,当数据插入到某个集合中时会触发 我希望在python脚本插入mongoDB实例时触发这些钩子。因此,如果我有一个预保存钩子,它将根据该钩子修改python脚本插入 这可能吗?如果是,我该怎么做 如果没有,请随时向我解释为什么这是不可能的和/或为什么我很愚蠢 EDIT:几个月后,我又回到了这个问题,当我问这个问题时,我对自己的绿色感到畏缩。我真正需要做的就是在NodeJS服务器上创建一个API端点/标志,专门

我正在为一个WebApp使用Nodejs服务器,Mongoose充当ORM

我有一些钩子,当数据插入到某个集合中时会触发

我希望在python脚本插入mongoDB实例时触发这些钩子。因此,如果我有一个预保存钩子,它将根据该钩子修改python脚本插入

这可能吗?如果是,我该怎么做

如果没有,请随时向我解释为什么这是不可能的和/或为什么我很愚蠢


EDIT:
几个月后,我又回到了这个问题,当我问这个问题时,我对自己的绿色感到畏缩。我真正需要做的就是在NodeJS服务器上创建一个API端点/标志,专门用于自动化任务,如python脚本,向其发送数据,并在NodeJS land结构中使用mongoose。

Mongo本身不支持钩子功能,
mongoose
提供了您可以使用的现成钩子。那么,如何使它在python中工作呢

  • 使用像python这样的现有框架,eve为您提供了数据库钩子,很像
    mongoose
    所做的。现在,eve是一个RESTAPI框架,从您的描述来看,它听起来不像您想要的。不幸的是,我不知道有哪一个软件包能完美地满足你的需求(如果你真的找到了,如果你能在你的问题中分享一个链接,那就太好了)

  • 构建自己的自定义包装器,就像一个。您可以非常快速地构建一个自定义包装器类,并非常轻松地实现您自己的逻辑


  • 这是不可能的,因为python和NodeJ是两个不同的运行时——独立的进程,彼此之间没有访问内存的权限

    Mongoose是一个nodejs ORM——一个将Javascript对象映射到Mongodb文档并处理数据库查询的库

    所有mongoose钩子都属于javascript空间。它们在Mongoose向mongo发送任何请求之前在javascript对象上执行。由此产生的两个结果:没有其他进程会弄乱这些钩子,甚至没有另一个NodeJ,并且一旦查询到达mongodb,它就是最终的,没有更多的钩子,没有更多的修改

    一个人说一幅100字的画:

    python和mongo都不知道mongoose钩子。对mongo的所有查询都是在客户端启动的-脚本发送一个请求来修改数据库的状态或查询数据库的状态

    从mongodb端的更新触发javascript代码执行的唯一方法是使用

    变更流不是mongoose钩子,但可以用来钩住mongo端的更新。这是对数据库的更高级的使用。它对mongo设置、oplog的大小、changestream客户端的可用性、错误处理等都有额外的要求。
    您可以在这里了解更多关于变更流的信息,我强烈建议您寻求专业建议来构建此类设置,以避免沮丧和意外行为。

    此答案满足了我的问题,并在回顾时解释了我的想法,我意识到,由于当时缺乏经验,我无法恰当地提出这个问题。我将用一个附录来更新这个问题,解释我使用了什么,并澄清我的原始问题。