所以我有一些云代码,我试图写一个帖子。
我的数据库设置为用户有一个likedPosts
数组,该数组具有用户喜欢的所有帖子的对象 ID。用户还有一个列coins
,当用户喜欢他们的帖子时,应该增加。
有一个 likes
列,该列是一个整数,随着每次喜欢而递增,并且 post 对象还有一个posterId
列,这是发布它的用户的对象 ID。
这是我现在的函数(我不太擅长javascript和云代码,所以如果有什么可怕的错误,我很抱歉(
Parse.Cloud.define("likePost", function(request, response) {
Parse.Cloud.useMasterKey();
var senderId = request.params.senderId;
var postId = request.params.postId;
var post = new Parse.Object ({objectId: postId});
var posterId = post.posterId
var poster = new Parse.User ({objectId: posterId});
var sender = new Parse.User ({objectId: senderId});
sender.add("likedPosts", postId);
poster.increment("coins");
post.increment("likes");
poster.save(null, {useMasterKey:true, success:
function(poster) {
console.log("Successfully saved poster");
}, error: function(poster, error) {
console.error("Error saving poster: " + error.message);
response.error(error);
}
});
post.save(null,{useMasterKey:true, success:
function(post) {
console.log("Successfully saved post");
}, error: function(post, error) {
console.error("Error saving post: " + error.message);
response.error(error);
}
});
sender.save(null, {useMasterKey:true, success:
function(sender) {
console.log("Successfully saved sender");
}, error: function(sender, error) {
console.error("Error saving sender: " + error.message);
response.error(error);
}
});
response.success();
});
我从 swift 调用函数,如下所示:
PFCloud.callFunction(inBackground: "likePost", withParameters: ["senderId" : PFUser.current()!.objectId!, " postId": postObject!.objectId!], block: { (result, error) in
if (error != nil) {
print(error!)
} else {
print("success liking")
}
})
但是,在我的日志中,我收到以下错误:
2017-06-21T21:47:59.499Z - Failed running cloud function likePost for user R4d8Zrcdhw with:
Input: {"senderId":"R4d8Zrcdhw"," postId":"XXbu55PdpR"}
Error: {"code":141,"message":{"code":200,"message":"bad or missing username"}}
2017-06-21T21:47:59.492Z - bad or missing username
我的猜测是请求缺少用于定义内容类型的标头。 我已经看到Parse通过Parse REST API返回"错误或缺少用户名"错误,如果Swift URLSession使用了不正确的内容类型标头。
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
或
Parse.Cloud.httpRequest({
url: 'http://www.example.com/',
headers: {
'Content-Type': 'application/json;charset=utf-8'
}
})