【问题标题】:Get author user ID using Parse.Query not current user使用 Parse.Query 获取作者用户 ID,而不是当前用户
【发布时间】:2019-09-06 08:53:06
【问题描述】:

我有两个解析类,用户和地点。 如果用户广告地点,则将用户添加为指向地点用户列的指针。 为了列出所有地点并确定用户有多少地点,我使用以下查询:

loadTotalPointsDetail(params: any = {}): Promise<Place[]> {
const page = params.page || 0;
const limit = params.limit || 100;

const query = new Parse.Query(Place);

query.equalTo('user', Parse.User.current());

query.skip(page * limit);
query.limit(limit);
query.include('category');
query.include('user');
query.doesNotExist('deletedAt');

return query.find();
}             

通过 Parse.User.current()) 过滤我将获得当前用户位置。

如果我不按 Parse.User.current()) 过滤,它会将所有位置作为对象返回,包含所有数据。

如何按地点真实作者/用户进行过滤?不是当前(登录)?

【问题讨论】:

    标签: javascript node.js parse-platform ionic4 parse-server


    【解决方案1】:
    loadTotalPointsDetail(params: any = {}): Promise<Place[]> {
      const page = params.page || 0;
      const limit = params.limit || 100;
    
      const query = new Parse.Query(Place);
    
      const user = new Parse.User();
      user.id = 'The id of the user that you want to search for';
      query.equalTo('user', user);
    
      query.skip(page * limit);
      query.limit(limit);
      query.include('category');
      query.include('user');
      query.doesNotExist('deletedAt');
    
      return query.find();
    }             
    

    【讨论】:

    • 你好,id应该是自动填充的,在place表中有一个用户,我想检索那个用户。我想查询地点用户所有者 ID 并提取他所有已发布的地点。
    • 我假设您想通过某个用户 ID 进行查询,对吧?这就是我的答案。我刚刚对其进行了编辑以包含完整的代码,以便您更好地理解。
    • 查询中的 user.id 应该是 place.user.id。想象一篇博文,有标题、描述和作者。我需要对所有作者的帖子进行分组,以便展示更多来自该作者的信息。从控制台我可以看到作者 ID,但我无法从 loadTotalPointsDetail 查询中访问它。该应用程序应自动获取作者 ID 并搜索该作者的更多帖子。这就是为什么获取当前它不适合我。
    • 我不是建议你获取当前的。看看我的回答。您知道要查看其地点的用户 ID,对吧?
    • 不,这就是重点,如果我知道用户 ID,我可以在查询中匹配它。但是来自 loadTotalPointsDetail 的用户 ID,必须是用户 ID 所在的地方用户名。
    【解决方案2】:

    我将在此处发布解决方案,虽然不是最常见的,但它对我有用:

      async loadData() {
    
    try {
    
      const places = await this.placeService.loadTotalPointsDetail(this.params);
      const placeU = await this.placeService.loadPlaceU(this.getParams().id);
    
      for (const place of places) {
        this.places.push(place);
      }
      let u = placeU.user.id;
      let totalUserPlaces = places.filter(x => x.user.id == u);
      if (totalUserPlaces) {
    
        /* The total returned by reduce() will be stored in myTotal */
        const myTotal = totalUserPlaces.reduce((total, place) => {    
    
            /* For each place iterated, access the points field of the 
            current place being iterated and add that to the current
            running total */
            return total + place.points;
    
        }, 0); /* Total is initally zero */
    this.points = myTotal;
    } else {}
    } catch (err) {
    
      const message = await this.getTrans('ERROR_NETWORK');
      this.showToast(message);}}
    

    所以我正在加载两个单独的查询:

    const places = await this.placeService.loadTotalPointsDetail(this.params); -> Gets all posts listings
    const placeU = await this.placeService.loadPlaceU(this.getParams().id); --> Gets the ID for current post
    

    我提取用户帖子ID:

    let u = placeU.user.id;
    

    我使用该用户进行过滤以获取他的帖子:

    let totalUserPlaces = places.filter(x => x.user.id == u);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      相关资源
      最近更新 更多