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

Parse Cloud Code Setting Relation On User Class

我无法在 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 class 中,您与 Review class 建立了一个名为 'Reviews'.[=38= 的多对多关系]

首先,我建议将您的用户对象命名为 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)
   }
});