diegohaz / local-sharing-parse

0 stars 0 forks source link

Usuário não está perdendo requestsLimit ao fazer pedidos #9

Closed diegohaz closed 9 years ago

diegohaz commented 9 years ago

O User.requestsLimit se mantém em 3 sempre. Acredito que isso seja porque o response.success() é chamado antes do user.save() ser concluído, que também deve ser o problema do #6 . Uma possível solução pode ser:

user.save().then(function() {
  response.success();
});
diegohaz commented 9 years ago

Ou também assim, só que ele vai retornar no response o usuário em vez do pedido.

  // Item exists? If not, create it
  query.first().then(function(result) {
    if (result) {
      item = result;
      return Parse.Promise.as(item);
    } else {
      // Capitalize item name
      itemName = itemName.charAt(0).toUpperCase() + itemName.slice(1);

      item.set('name', itemName);
      item.set('nameLowercase', itemName.toLowerCase());

      return item.save();
    }
  }).then(function(item) {
    // Create request
    var req = new Parse.Object('Request');

    req.set('author', user);
    req.set('item', item);
    req.set('open', false);
    req.set('expired', false);

    return req.save();
  }).then(function(req) {
    // Decrement requests limit from user
    user.increment('requestsLimit', -1);
    return user.save();
  }).then(response.success, response.error);
});
diegohaz commented 9 years ago

Na verdade, é tudo culpa do beforeSave no usuário, que está sempre resetando os campos. https://github.com/diegohaz/local-sharing-parse/blob/8cb7ad4993e5150573ba9faf569d8232b28a31fc/cloud/main.js#L17-L21