【问题标题】:Parse Cloud Code Setting Relation On User Class解析用户类上的云代码设置关系
【发布时间】:2021-02-19 20:35:23
【问题描述】:

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

【问题讨论】:

  • 不确定为什么在代码块中添加了一个 ',但仅供参考,我正在运行的代码中不存在

标签: parse-platform parse-cloud-code


【解决方案1】:

我认为

  • reviewObj 是用户最近创建的评论对象。
  • 在您的 User 类中,您与 Review 类建立了一对多关系,名为 'Reviews'

首先我建议将您的用户对象命名为user 而不是object,以便更清楚地处理您正在处理的内容并使您的代码更易于理解。

既然你说,评论对象已经成功保存在服务器端,我建议在你的请求中只传输reviewId。


要将对象添加到关系中,首先需要获取用户对象的关系属性:
const reviewsRelation = user.relation('Reviews');

然后将对象添加到关系中,只需调用:
reviewsRelation.add(user);

总的来说,你的 sn-p 应该是这样的:

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)
   }
});  

【讨论】:

  • 感谢您发现这一点。我尝试运行上述程序并得到“错误:_User.Reviews 的架构不匹配;预期的 Relation 但得到了 Relation”
  • 听起来 reviewObj 不是 Review.class 类型,是吗?这只是评论的 id 吗?
  • @user1486736 我建议使用 reviewObjID 来查询评论对象。我相应地更新了我的答案。
  • 尤里卡!我不得不将评论查询行更改为“const reviewQuery = new Parse.Query('Reviews');”但除此之外,工作!非常感谢您的帮助!
  • 既然你对罗宾很有帮助,你有没有更好的方法来优化我在这个问题中的查询? stackoverflow.com/questions/66359697/…
猜你喜欢
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
相关资源
最近更新 更多