【问题标题】:Upgrading Cloud function from Parse-server 2.0 to 3.0将云功能从 Parse-server 2.0 升级到 3.0
【发布时间】:2020-07-02 04:59:25
【问题描述】:

我正在将我的 Parse-server 2.0 云功能升级到 3.0。

在 2.0 中工作的功能之一是:

Parse.Cloud.define("countOfObservations", function(request, response) {
    var query = new Parse.Query("GCUR_OBSERVATION");
    
    query.count({
      success: function(count) {
        // The count request succeeded. Show the count
        response.success(count);
      },
      error: function(error) {
        response.error("GCUR_OBSERVATION table lookup failed");
      }
    });
});

由于 Parse-server 3.0 已删除 response 并利用本机承诺或 async/await 进行异步验证。我尝试重写如下函数。

Parse.Cloud.define("countOfObservations", (request) => {
    var query = new Parse.Query("GCUR_OBSERVATION");
    var countOfObs = 0;
    query.count({ useMasterKey: true }).then( (count) => {
        countOfObs = count;
        console.log("*** count=" + countOfObs);
        return new Promise(function(resolve, reject) {
            if (countOfObs >= 0)
                return resolve(countOfObs);
            else
                return reject();
        })
    });
});

当我从客户端调用该函数时,它返回了 {} 而不是我预期的 {"result":2882}。但是,控制台确实打印了 *** count=2882

如何使用原生 Promise 使函数再次工作?

【问题讨论】:

    标签: parse-platform es6-promise parse-server parse-cloud-code


    【解决方案1】:

    它返回空对象的原因是因为您的函数不等待query.count 完成并立即返回undefined

    你可以写return await query.count(...).then(...); 甚至更好,将整个函数转换成 Promise 语法并节省一些代码行。 Parse 团队开发了一个有用的 migration guide 并提供示例,让您更轻松地进行转换。

    那么这就是你所需要的:

    Parse.Cloud.define("countOfObservations", async (request) => {
        const query = new Parse.Query("GCUR_OBSERVATION");
        const count = await query.count({ useMasterKey: true });
        console.log("*** count=" + count);
        return {"count": count};
    
        // or if you really need to reject:
        // return count >= 0 ? Promise.resolve(count) : Promise.reject();
    });
    

    【讨论】:

    • 谢谢@Manuel。我试过你的代码,但没有用。控制台打印“*** count=[object Promise]”,客户端输出为“{“result”:{“count”:{}}}”。
    • 对,我加了async/await,请重试。
    猜你喜欢
    • 1970-01-01
    • 2013-11-23
    • 2021-12-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多