我保存了一个名为' Post'我有一个名为' author'这是Parse.User类的指针。当我创建一个新的' Post'对象,我通过了作者' value作为我的Cloud Code函数的Parse.User.id值。显然,这会导致“作者”的类型错误。 field,因为它是一个字符串,它正在寻找Parse.User对象。
为了避免这种情况,我设置了一个beforeSave触发器来检查' author'如果是string类型,则在Parse.User类中查询用户id,并将author值设置为返回的Promise。
但是我的beforeSave触发器似乎无论出于何种原因而被调用。有谁知道为什么会发生这种情况?最初我认为我的云功能已经用完了,但是我的功能正在完成,并且因为我将字符串传递给Pointer字段而给出了我预期的类型错误。
这是我的代码:
Parse.Cloud.beforeSave('Post', function (request, response) {
var author = request.object.get('author');
if (typeof author == 'string') {
var qry = Parse.Query(Parse.User);
qry.get(author, {
success: function (user) {
request.object.set('author', user);
response.success();
},
error: function (u, err) {
response.error(err.message);
}
});
} else {
response.success();
}
});
Parse.Cloud.define("post_update", function(request, response) {
var vals = request.params;
/**
* Update if vals.objectId is set otherwise error
*/
if (typeof vals['objectId'] != 'undefined' && typeof vals['objectId'] != 'null') {
var qry = new Parse.Query('Post');
qry.get(vals.objectId, {
success: function (obj) {
delete vals.objectId;
obj.save(vals, {
success: function (nobj) {
response.success({redirect: false, object: nobj.id});
},
error: function (nobj, err) {
response.error(err.message);
}
});
},
error: function (obj, err) {
response.error(err.message + ': ' + vals.objectId);
}
});
} else {
response.error('Unable to update post');
}
});
这是我的工作:
Parse.Cloud.define("post_update", function(request, response) {
var vals = request.params;
var onSave = {
success: function (nobj) {
response.success({redirect: false, object: nobj.id});
},
error: function (nobj, err) {
response.error(err.message);
}
};
/**
* Update if vals.objectId is set otherwise error
*/
if (typeof vals['objectId'] != 'undefined' && typeof vals['objectId'] != 'null') {
var qry = new Parse.Query('Post');
qry.get(vals.objectId, {
success: function (obj) {
delete vals.objectId;
if (typeof vals['author'] === 'string') {
var uqry = new Parse.Query(Parse.User);
uqry.get(vals.author, {
success: function (u) {
vals.author = u;
obj.save(vals, onSave);
},
error: function (u, err) {
vals.author = null;
obj.save(vals, onSave);
}
});
} else {
vals.author = null;
obj.save(vals, onSave);
}
},
error: function (obj, err) {
response.error(err.message + ': ' + vals.objectId);
}
});
} else {
response.error('Unable to update post');
}
});