【问题标题】:Parse cloud code query hides objects even if master key is used即使使用主密钥,解析云代码查询也会隐藏对象
【发布时间】:2020-03-01 12:45:32
【问题描述】:

我正在使用解析服务器云功能来使用主密钥查询一个类。 类对象具有 ACL 以允许创建对象的用户只读。 该查询给了我零个结果。 但是,一旦我将测试对象上的 ACL 更改为公共读/写,云函数查询就会为我提供所需的对象。 据我所知,使用主密钥我应该得到查询对象。 有谁知道这里的问题是什么?

const mQuery = new Parse.Query('MyClass');
mQuery.equalTo('objectId', mObjectId);

const result = await mQuery.first(null, {useMasterKey : true});

console.log("mQuery",mQuery);
console.log("result",result);

if (!result) {
  throw new Error('no data found.');
}

这里的结果被记录为未定义。一旦对象被公开,结果就是公共对象。我正在使用解析服务器 3.x。

【问题讨论】:

    标签: parse-platform parse-server back4app parse-cloud-code


    【解决方案1】:

    使用 Parse Server 版本等于 3.x,您可以执行以下操作:

    Parse.Cloud.define("TestCloudCode", async (request) => {
         const query = new Parse.Query(Parse.User);
         const objectId = request.params.objectId;
         const results = await query.get(objectId, {useMasterKey:true});
         return results;
    });
    

    称呼它:

    curl -X POST \
      -H "X-Parse-Application-Id: ${APPLICATION_ID}" \
      -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
      -H "Content-Type: application/json" \
      -d '{ "objectId": "${Replace_with_your_objectId}" }' \
      https://parseapi.back4app.com/functions/TestCloudCode
    

    【讨论】:

      【解决方案2】:

      first 只接受一个参数,所以重写为:

      const result = await mQuery.first({ useMasterKey : true });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-28
        • 1970-01-01
        • 1970-01-01
        • 2016-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多