【问题标题】:Parse Cloud Code beforeSave timeout在保存超时之前解析云代码
【发布时间】:2016-12-22 01:00:10
【问题描述】:

将电子邮件地址添加到列表时,如果地址属于现有用户,我想在我的云代码中签入 beforeSave 函数。如果不是,我想停止保存调用并向我的移动应用返回错误响应。

当我运行下面的代码时,输​​入有效的电子邮件地址没有问题。一旦我输入了一个无效的地址,beforeSave 函数就会陷入混乱,并在一段时间后超时,将大量垃圾返回给客户端。

Parse.Cloud.beforeSave("EventUsers", function(request, response) {
    var email = request.object.get("email");
    console.log("starting beforeSave for user: " + email);

    Parse.Cloud.useMasterKey();
    var userQuery = new Parse.Query(Parse.User);
    userQuery.equalTo("email", email);

    userQuery.first().then(function(user) {
        console.log("user: " + user.get("email"));
        if (user) {
            console.log("User exists");
            response.success();
        }
        console.error("No user with that email");
        response.error("199");
    }, function(error) {
        console.error(error);
        response.error("198");
    });
});

当我使用无效的电子邮件地址运行此程序时,我只会收到报告给我的控制台的第一个 console.log 调用 - 其他的都没有显示。

我在 Heroku 上运行我的解析服务器。

【问题讨论】:

    标签: heroku parse-platform timeout parse-cloud-code before-save


    【解决方案1】:

    您是在 parse.com 上还是在您自己的 mongo db 后端上运行它?

    无论如何,您的问题是电子邮件可能未编入索引,因此它正在执行全表扫描。如果是你自己的后端,你可以在集合中的 email 上放一个索引。

    如果您正在运行自己的数据库,不确定是否有人已经完成(我还没有,但应该这样做),但您也可以只对电子邮件设置一个独特的约束,然后您就可以简单地捕获在 user.save() 上拒绝了承诺,根本不用担心 beforeSave 钩子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多