Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pointers 指针指向非objectId字段的解析平台查询始终返回null_Pointers_Join_Parse Platform_One To Many - Fatal编程技术网

Pointers 指针指向非objectId字段的解析平台查询始终返回null

Pointers 指针指向非objectId字段的解析平台查询始终返回null,pointers,join,parse-platform,one-to-many,Pointers,Join,Parse Platform,One To Many,在使用mongoDB进行解析时,我有两个集合:access和tokens 访问收集 代币收集 这就是我添加记录以访问的方式 //Enter Record into Parse with Block ParseObject accessObject = new ParseObject("access"); accessObject.put("tokenid", anaQrCode); accessObject.put("locationid"

在使用mongoDB进行解析时,我有两个集合:access和tokens

访问收集

代币收集

这就是我添加记录以访问的方式

//Enter Record into Parse with Block  
        ParseObject accessObject = new ParseObject("access");
        accessObject.put("tokenid", anaQrCode);
        accessObject.put("locationid", routeID);
        accessObject.put("pTokenId", ParseObject.createWithoutData("tokens", anaQrCode));
        accessObject.saveInBackground(new SaveCallback() {
            @Override
            public void done(ParseException e) {
                if (e != null){
                    //error in save
                } else {
                    //save success
                }
            }
        });
    }
这就是我如何在一次查询中从两个集合中获取数据的查询方式

 //get query result from database
        ParseQuery<ParseObject> query = ParseQuery.getQuery("access");
        query.include("pTokenId");
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> objects, ParseException e) {
                if (e != null) {
                    //error
                    Log.d("TAG1", "error " + e);
                } else {
                    //success
                    for (int i=0; i< objects.size(); i++) {
                        ParseObject tmpPtoken = objects.get(i).getParseObject("pTokenId");
                    }
                }
            }
        });
//从数据库获取查询结果
ParseQuery=ParseQuery.getQuery(“访问”);
查询。包括(“pTokenId”);
findInBackground(新的FindCallback(){
@凌驾
公共void done(列出对象,parsee异常){
如果(e!=null){
//错误
日志d(“TAG1”,“错误”+e);
}否则{
//成功
对于(int i=0;i
问题是,tmpPtoken对象始终返回null

我的目标是在单个查询中检索以下信息

 //get query result from database
        ParseQuery<ParseObject> query = ParseQuery.getQuery("access");
        query.include("pTokenId");
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> objects, ParseException e) {
                if (e != null) {
                    //error
                    Log.d("TAG1", "error " + e);
                } else {
                    //success
                    for (int i=0; i< objects.size(); i++) {
                        ParseObject tmpPtoken = objects.get(i).getParseObject("pTokenId");
                    }
                }
            }
        });

您的列名在图片中是'p_pTokenId',但在代码中保存对象时您正在设置'pTokenId'。没错,Parse在命名指针字段时有一个约定。自动添加“(下划线)\u p(下划线)”作为指针列名的前缀;如果我通过引用tokens集合中的objectId创建了指针,那么对查询的响应就没有问题。然而,要从tokens集合中获取objectId,我必须再进行一次查询,这与我在单个查询中获取lookup字段的目的背道而驰。本质上,我需要像在sql中那样连接表。您能分享一下您的解析模式吗?你的数据看起来不对。您应该在_p_pTokenId中有tokens'u id,而不是tokens'tokenIdDavi,您确实是对的。我故意在_p_pTokenId中使用tokenId,因为在access中保存记录时,我没有办法从tokens集合中知道_id;没有额外的查询。因为我在保存访问记录时知道tokenId,所以我想使用tokenId作为查找集合(tokens)的指针参数。不幸的是,在这种情况下,查询返回null,我想了解原因