如果您已經張貼的是你正在運行什麼,那麼你應該在你的控制檯
Uncaught You can't add an unsaved Parse.Object to a relation.
錯誤。這是javascript和異步promise的美妙世界。之前我一直在這裏解釋工作我在控制檯測試代碼:
編輯:
以下是更新的代碼。在之前的代碼中,我試圖將關係保存在錯誤的變量上。 myAuthor和myBook變量是對您正在創建的新對象的引用,而不是對由promise保存並返回的結果對象的引用。我將變量更改爲更明確,以幫助說明問題所在。以下是工作代碼。現在
var Author = Parse.Object.extend("Authors");
var myAuthor = new Author();
myAuthor.set("Name", "Dostoievski");
myAuthor.save().then(function(authorRes){
var Book = Parse.Object.extend("Books");
var myBook = new Book();
myBook.set("Title", "The Idiot");
myBook.save().then(function(bookRes){
var relation = bookRes.relation("authors");
relation.add(authorRes);
bookRes.save({
success: function(relation) {
console.log(relation);
},
error: function(relation, error) {
console.log(relation + "::" +error.code+"::"+error.message);
}
});
});
});
,正在發生的事情在你的代碼:
var Author = Parse.Object.extend("Authors");
您現在有一個可變的作者具有解析的所有屬性對象,你已經通過了字符串「作者」到。
var myAuthor = new Author();
創建一個剛剛創建的作者類的新實例名爲myAuthor。
myAuthor.set("Name", "Dostoievski");
您已經在創建的作者類上設置了屬性。
myAuthor.save();
您已經向Parse.com發送了一個請求,它將您的新對象保存在您在Parse上創建的表中。作爲回報,Parse向你發送了一個將會發生的承諾(但實際上還沒有發生)。
var Book = Parse.Object.extend("Books");
var myBook = new Book();
myBook.set("Title", "The Idiot");
myBook.save();
同樣在這裏。你做了以上所有的事情,Parse.com向你發出了一個承諾,它將拯救myBook(但它還沒有)。
var relation = myBook.relation("authors");
relation.add(myAuthor);
myBook.save();
在這裏,您正試圖添加一個關係到myBook(但myBook尚未保存在Parse.com中)。 這是您的代碼打破的地方,因爲Parse不允許您在不存在的對象上創建關係(因爲解析沒有爲其創建關係使用ObjectId)。
要解決這個問題,您必須等到Parse告訴您已完成將表中的對象保存並創建該ObjectId。要做到這一點,你添加到你的save()調用...
.then(function(result){
//now you can do things with the object you just saved.
});
打開你的控制檯...有沒有被捕獲你不能添加一個未保存的Parse.Object到關係。錯誤? –
是的,那種錯誤。 –