在Parse.com中保存对象时没有消息的奇怪错误

时间:2015-05-14 13:47:16

标签: jquery parse-platform save runtime-error

我最近几周一直在使用Parse,因为我一直在创建一个可以节省一些"产品的应用程序。它一直运行良好,但我发现了一个奇怪的错误,我无法调试或找到失败的原因。

简化,我有一张这样的表:

+------+------+-------+-------+
| Name | Type | Price | Stock |
+------+------+-------+-------+
| Foo  | Bar  | 1.00  | true  |

保存代码通常与de documentation相同:

' saveProducts':function(){

// get products

// validate products

// save products
product.save(null, {
  success: function(product) {
      console.log("Saved");
      console.log(product);
  },
  error: function(product, error) {
      console.log("Error");
      console.log(product);
      console.log(error);
  }
});

到目前为止,这一切都运行正常,因为所有对象都是这样的:

+------+------+-------+-------+
| Name | Type | Price | Stock |
+------+------+-------+-------+
| Foo  | Bar  | 1.00  | true  |
+------+------+-------+-------+
| Baz  | Coo  | 2.00  | true  |
+------+------+-------+-------+
| Sun  | Low  | 3.00  | true  |

进入控制台:

f {_serverData: Object, _opSetQueue: Array[1], attributes: Object, _hashedJSON: Object, _escapedAttributes: Object…}
  _allPreviousSaves: b.Promise 
  _changing: false
  _escapedAttributes: Object
  _existed: true
  _hasData: true
  _hashedJSON: Object
  _opSetQueue: Array[1]
  _pending: Object
  _previousAttributes: Object
  _saving: 0
  _serverData: Object
  _silent: Object
  attributes: Object
  changed: Object
  cid: "c133"
  createdAt: Thu May 14 2015 15:31:25 GMT+0200 (CEST)
  id: "XBMruz5vZb"
  updatedAt: Thu May 14 2015 15:31:26 GMT+0200 (CEST)
  __proto__: f

如您所见,有一个id和一个createdAt字段。

但是当我尝试保存Stock设置为false的文件时,我得到了:

f {_serverData: Object, _opSetQueue: Array[1], attributes: Object, _hashedJSON: Object, _escapedAttributes: Object…}
  _escapedAttributes: Object
  _hasData: true
  _hashedJSON: Object
  _opSetQueue: Array[1]
  _pending: Object
  _previousAttributes: Object
  _serverData: Object
  _silent: Object
  attributes: Object
  changed: Object
  cid: "c135"
  __proto__: f

id,没有createdAt。我得到的错误是:

[false]

完全停止。如果我将Stock设置为true来创建相同的对象,则会将其保存得很好。

任何想法为什么会发生这种情况?

修改

这是我的方法的扩展版本:

'saveProduct': function() {

  // Gets data
  var data = this.getDataFromForm();

  if(this.validateData(data)) {

    var name  = data[0],
    type      = data[1],
    price     = data[3],
    stock     = data[4];

    var productData = {'name'  : name,
                       'type'  : type,
                       'price' : Number(price),
                       'stock' : stock
                      };

    var product = new window.app.Product();
    // window.app.Product is defined as a Model:
    // window.app.Product = Parse.Object.extend("Product", { ... });

    // And here comes the Parse save function
    product.save(productData, {
    ...
    });
  }
}

更新2

这是我打印stock时所得到的:

false

它是一个布尔值,而不是一个字符串。

这是我在打印productData

时得到的结果
Object {name: "Foo", type: "Bar "…}
  name: "Foo"
  price: 1
  type: "Bar"
  stock: false
  __proto__: Object

0 个答案:

没有答案