javascript - Parse.com 在 BeforeSave 中识别更新或插入

标签 javascript parse-platform parse-cloud-code before-save

我正在为 Parse.com 覆盖 CloudCode 中的 BeforeSave。 这是我在 logs 中看到的:

Input: {"original":null,"update":{"password":"5428","phone_number":"56858","ACL":{"T1pXElsPPT":{"read":true,"write":true}},"config":"{}","creator":"T1pXElsPPT","name":"quarta prova"}}
Result: Update changed to {"config":"{}","creator":"T1pXElsPPT","name":"quarta prova","password":"5428","phone_number":"56858","ACL":{"T1pXElsPPT":{"read":true,"write":true}}}

只有当用户正在创建一个对象时,我才需要检查BeforeSave,而不是当他更新一个 一个。这是我到目前为止所做的:

Parse.Cloud.beforeSave("tracker", function(request, response) {
var spaces = availableSpace(request.user.id);
if (request.original != undefined && request.original === null) {
    if (spaces == 0) {
        response.error("No available spaces");
    } else if (spaces >= 1) {
        response.success();
    } else if (spaces < 0) {
        response.error("Lookup error");
    }
} else {
    response.success();
}

});

但似乎 original 不在请求对象中(所以它是未定义的,总是导致 response.success();)

有没有办法检查 original 或其他方法来检查这是 insert 还是 update

最佳答案

您可以使用 Parse.Object.isNew()

Parse.Cloud.beforeSave("tracker", function(request, response) {
  var spaces = availableSpace(request.user.id);
  if (request.object.isNew()) {

    if (spaces === 0) {
        response.error("No available spaces");
    } else if (spaces >= 1) {
        response.success();
    } else if (spaces < 0) {
        response.error("Lookup error");
    }

  } else {
      response.success();
  }
});

关于javascript - Parse.com 在 BeforeSave 中识别更新或插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26481270/

相关文章:

javascript - 当遇到返回之前执行到达 block 末尾时,在 Parse Promise then block 中会发生什么?

ios - 在 Cloud Code 中解析 LiveQuery

parse-platform - 解析云: Query not running in exported function from save() callback

JavaScript 删除方法?

javascript - Jest - 期望抛出消息测试

javascript - 使用键或索引方法从 Firebase 服务器删除数据

javascript - 如何解析从 Intl.DateTimeFormat 生成的日期字符串

ios - 带解析的查询太慢

根域上的 https 托管

javascript - 将列表传递给 Parse.Promise.when 但仅获取 promise 链中的第一个元素