有没有一种方法可以在不向REST API发出HTTP请求的情况下保存ParseObject?

时间:2020-03-31 13:05:44

标签: mongodb http parse-server

关于这个主题我没有找到太多,所以我想知道这是否是一件容易的事,或者实际上是不可能的。我的问题是,即使仅一次调用Cloud函数,我的服务器上仍有许多HTTP请求。所以我想所有的对象更新/保存/查询都是通过使用REST API进行的。我有很多HTTP请求,以至于有数百个超时,我想这会产生大量流量。

是否可以通过直接对MongoDB执行查询来保存ParseObject?如果目前无法实现,您能否给我一些提示,是否已经有一些帮助程序函数将ParseQuery和ParseObject转换为MongoDB中的亲戚,以便我可以直接使用MongoDB驱动程序?

对于我的应用程序而言,目前减少HTTP请求流量非常重要。

有什么主意吗?谢谢!

编辑: 这里是重现该概念的示例:

启用云功能:

Parse.Cloud.define('hello', async (req, res) => {
  let testClassObject = new Parse.Object('TestClass');

  await testClassObject.save(null, {useMasterKey: true});

  let query = new Parse.Query('TestClass');

  let testClassRecords = await query.find({useMasterKey: true});

  return testClassRecords;
});

发出POST请求: POST http://localhost:1337/parse/functions/hello

使用Wireshark在端口1337上捕获HTTP通信: enter image description here

您可以看到,由于保存/查询代码,对于1个POST请求,发出了另外2个POST请求。我的目标是避免这两个HTTP调用,而直接进行DB调用,以减少通过整个Web服务器堆栈的流量。

链接到Github问题:https://github.com/parse-community/parse-server/issues/6549

1 个答案:

答案 0 :(得分:0)

“解析服务器directAccess”选项应该可以为您解决问题。请确保您正在像这样初始化Parse Server:

const api = new ParseServer({
  ...
  directAccess: true
});
...