【问题标题】:How to write trigger and functions code in python(pymongo) for MongoDB Stitch instead of NodeJS(mongoose)如何在 python(pymongo) 中为 MongoDB Stitch 而不是 NodeJS(mongoose) 编写触发器和函数代码
【发布时间】:2019-09-07 13:56:10
【问题描述】:

我想设置 MongoDB Stitch 与我的 Python 脚本的连接,并触发数据库事件触发以执行 Python 函数。

我已经看到了这个article,它显示了与 python 脚本缝合的连接。我找不到如何在 python 中执行这种类型的import of JavaScript

我希望如果在我的数据库中删除了已知集合的 TTL 索引文档,那么 MongoDB 将触发我的 Python 脚本并在我的 Python 脚本中执行一个函数。我怎样才能做到这一点?

【问题讨论】:

    标签: python-3.x mongodb-query database-trigger pymongo-3.x mongodb-stitch


    【解决方案1】:

    MongoDB Stitch Triggers 侦听配置类型的应用程序事件,每个事件都与特定的 Stitch 函数链接。此函数是 Stitch 托管函数,目前 MongoDB Stitch 函数只能用 JavaScript (ES6+) 编写。因此,目前没有办法为 Stitch 触发器编写 Python 函数。根据您要执行的操作,如果足够简单,我建议将 Python 逻辑转换为 JavaScript。

    根据您的要求和用例,您还可以尝试几种解决方法:

    1. 使用pymongo.change_stream 打开MongoDB ChangeStreams 以观察集合、数据库或整个集群的变化。 Stitch 触发器也使用 MongoDB ChangeStream 作为底层机制。这里的不同之处在于执行不是在 Stitch 服务器中,而是在您的应用程序服务器上。例如:

      pipeline = [{'$match': {'operationType': 'insert'}}]
      with db.collection.watch(pipeline) as stream:
          for insert_change in stream:
              # Trigger something based on an insert of a document 
              print(insert_change)
      
    2. 为调用您自己的应用程序 Web 服务器的触发器编写一个简单的 Stitch 函数(在 JavaScript 中)。例如,编写一个接受 REST API 端点(即https://your.custom.server.com/api/v1/insert?event=101)的 Python Flask Web 服务器,然后执行您的 Python 函数。在这里,您将 changestream watch 委托给 Stitch,但有一个服务器等待来自 Stitch 的传入呼叫。

    【讨论】:

    • Stitch 目前不支持 ES6+。您可能需要仔细检查。
    • @karloluis 你是对的,它不是 100% 支持的,但非常接近。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多