解析服务器SDK-包含对象方法不适用于在抖动中获取整个对象

问题描述

我在我的应用中使用parse server sdk来存储数据库

我的Back4App仪表板中有三个类,分别是“ _ User”,“ Office”,“ Office_Members”

在Office_Members类中,它具有以下列,

  1. user_id(指向_User的指针)
  2. office_id(指向办公室的指针)
  3. 计数

要从Office_Members中获取包括指向_User的指针在内的数据,我正在使用以下代码

QueryBuilder<ParSEObject> parseQuery = QueryBuilder<ParSEObject>(ParSEObject("Office_Members"))
              ..whereEqualTo("office_id",ParseResponse_OfficeObject)
              ..includeObject(["user_id "]);

ParseResponse apiResponse = await parseQuery.query();

输出

Payload : [{"className":"Office_Members","objectId":"twpDY51PUK","createdAt":"2020-08-14T09:58:59.775Z","updatedAt":"2020-08-14T09:58:59.775Z","office_id":{"__type":"Pointer","className":"Office","objectId":"4dkfSMrwBI"},"user_id":{"__type":"Pointer","className":"_User","objectId":"Hx5xJ5ABxG"},"count":1}]

在有效负载响应中,我没有得到整个user_id指针响应。

那么有人可以帮助我我做错了什么吗?

谢谢。

解决方法

为什么不简单地使用云代码?我不熟悉Flutter,但我可以建议您使用这种替代解决方案。 编写这样的函数。

    Parse.Cloud.define("fetchMemberAndUser",async (request) => {
        //Pass in ParseResponse_OfficeObject ID as parameter
        var objectId = request.params.id;
    
        //Now do a simple get query
        var query = new Parse.Query(Parse.Object.extend("Office_Members"));
        //Using .includes to get the user profile object
        query.include("user_id");
        //This will return Office_Memebers Object along with user profile
        return query.get(objectId,{useMasterKey:true});
    }
,

数据应包括在内。 日志记录功能只是不打印指针数据。

,

数据应包括在内。打印功能不打印指针数据。

您可以直接将其打印出来以进行测试,例如

response.results[0].get('user_id').get('name')

Evaluation Expression E.g.


在您的模型中,您可以以相同的方式访问,例如

通话模型

if(response.success){
  return response.results.map((p) => Example.fromParse(p)).toList();
} else {
  throw ParseErrors.getDescription(response.error.code);
}

型号

import 'package:parse_server_sdk/parse_server_sdk.dart';

class Example {

  Example({this.id,this.name});

  Example.fromParse(ParseObject parseObject) :
        id = parseObject.objectId,name = parseObject.get('user_id').get('name');

  final String id;
  final String name ;


  @override
  String toString() {
    return 'Example{id: $id,name: $name}';
  }
}