我最近几周一直在使用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, {
...
});
}
}
这是我打印stock
时所得到的:
false
它是一个布尔值,而不是一个字符串。
这是我在打印productData
:
Object {name: "Foo", type: "Bar "…}
name: "Foo"
price: 1
type: "Bar"
stock: false
__proto__: Object