我的电子邮件对象(我自己的自定义类)正在编写,虽然关系没有按时设置,任何想法如何正确链接?
// Create new Email model and friend it
addFriendOnEnter: function(e) {
var self = this;
if (e.keyCode != 13) return;
var email = this.emails.create({
email: this.emailInput.val(),
ACL: new Parse.ACL(Parse.User.current())
});
var user = Parse.User.current();
var relation = user.relation("friend");
relation.add(email);
user.save();
this.emailInput.val('');
}
谢谢! 刚
答案 0 :(得分:2)
因为与Parse的服务器交谈是异步的,所以Parse.Collection.create使用Backbone风格的选项对象,并在创建对象时使用回调。我想你想做的是:
// Create new Email model and friend it
addFriendOnEnter: function(e) {
var self = this;
if (e.keyCode != 13) return;
this.emails.create({
email: this.emailInput.val(),
ACL: new Parse.ACL(Parse.User.current())
}, {
success: function(email) {
var user = Parse.User.current();
var relation = user.relation("friend");
relation.add(email);
user.save();
self.emailInput.val('');
}
});
}
答案 1 :(得分:0)
知道了!
this.emails集合上的.create方法实际上并不返回对象,因此var email为空。不知怎的,Parse猜测它是一个类Email的空对象,所以我猜结构是唯一一次保留的东西.create完成了它的工作。
相反,我使用.query,.equalTo和.first
检索服务器上的电子邮件对象// Create new Email model and friend it
addFriendOnEnter: function(e) {
var self = this;
if (e.keyCode != 13) return;
this.emails.create({
email: this.emailInput.val(),
ACL: new Parse.ACL(Parse.User.current())
});
var query = new Parse.Query(Email);
query.equalTo("email", this.emailInput.val());
query.first({
success: function(result) {
alert("Successfully retrieved an email.");
var user = Parse.User.current();
var relation = user.relation("friend");
relation.add(result);
user.save();
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
this.emailInput.val('');
}