解析用户类上的云代码设置关系

问题描述

我遇到了无法在 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)
   }
});