问题描述
我遇到了无法在 Parse 中运行一些云代码的问题。目前,我传递了另一个要为其设置评论的用户的 objectId。在客户端,我正在保存评论并捕获该对象。我也将其传递给云代码。两者都显示在那里,但我无法找出在此用户上设置关系并应用创建的评论的正确方法。代码截图如下。在我撞墙之前,任何帮助将不胜感激。
Parse.Cloud.define("addReview",async (request,response) => {
let { userObjId,reviewObj } = request.params;
const query = new Parse.Query(Parse.User);
//get the user object to post review of
try{
let object = await query.get(userObjId,{useMasterKey: true});
console.log(object);
console.log("running");
object.set('Reviews',new Parse.Object(reviewObj));
object.save(null,{ useMasterKey: true })
return ("saved relation and updated reviews");
} catch (err){
throw new Error(err.message)
}
});
解决方法
我认为
-
reviewObj
是评论对象,用户最近创建。 - 在您的
User
类中,您与Review
类之间存在一对多关系,名为'Reviews'
。
首先,我建议将您的用户对象命名为 user
而不是 object
,以便更清楚地说明您正在处理的内容并使您的代码更易于理解。
既然你说了,review对象已经成功保存在服务器端,我建议你只在你的请求中传输reviewId。
要将对象添加到关系中,首先需要获取用户对象的关系属性:const reviewsRelation = user.relation('Reviews');
然后将对象添加到关系中只需调用:reviewsRelation.add(user);
总的来说,您的代码段应如下所示:
Parse.Cloud.define("addReview",async (request,response) => {
let { userObjId,reviewObjId } = request.params;
const userQuery = new Parse.Query(Parse.User);
const reviewQuery = new Parse.Query(Parse.Review);
//get the user object to post review of
try{
let user = await userQuery.get(userObjId,{useMasterKey: true});
let review = await reviewQuery.get(reviewObjId,{useMasterKey: true});
console.log(user);
console.log("running");
const reviewsRelation = user.relation('Reviews');
reviewsRelation.add(review);
user.save(null,{ useMasterKey: true })
return ("saved relation and updated reviews");
} catch (err){
throw new Error(err.message)
}
});