Javascript Parse.com:查找属于objectId为的用户的所有对象

Javascript Parse.com:查找属于objectId为的用户的所有对象,javascript,parse-platform,Javascript,Parse Platform,我有一门语法课,比如说图片。每一个都属于一个用户。对该用户的引用作为指向用户的指针存储在Pictures表/类中 在我的云代码中,我试图使用主密钥获取属于用户的所有图片。以下是我的代码: Parse.Cloud.define("getPictures", function(request, response) { Parse.Cloud.useMasterKey(); var query = new Parse.Query("Pictures"); query.equalTo(

我有一门语法课,比如说图片。每一个都属于一个用户。对该用户的引用作为指向用户的
指针存储在Pictures表/类中

在我的云代码中,我试图使用主密钥获取属于用户的所有图片。以下是我的代码:

Parse.Cloud.define("getPictures", function(request, response) {

  Parse.Cloud.useMasterKey();

  var query = new Parse.Query("Pictures");

  query.equalTo("user", request.params.user);

  query.find({
    success: function(results) {

      var status = "Found " + results.length + " pictures for userId " + request.params.user;
      response.success(status);

    },

    error: function() {

      status = "No pictures exist for userId " + request.params.user; 
      response.error(status);
    }
  });
});
例如,此代码输出id为“xyz”的特定用户有0张图片。但是,我可以看到用户存储了很多图片

我还验证了问题不在于使用主密钥,因为我在控制台日志中看到代码是作为主密钥执行的。此外,如果我通过
objectId
查询图片,结果中会显示它,这意味着ACL不是这里的问题


我想我必须在这里使用关系/连接,但我不确定如何做到这一点。

指针作为对象存储在Parse数据库中,因此,如果您尝试使用
query.equalTo()
函数将字符串与对象进行比较,将找不到任何结果。这是指针的存储方式:

{
    __type: 'Pointer',
    className: '_User',
    objectId: user-object-id
}
如果要查询带有指针的类,并希望结果包含嵌套的整个对象,则应在查询中设置:

var query = new Parse.Query('Pictures');
query.include('user');
在我的查询中,当我想按指针列进行搜索时,我会将我的用户对象与嵌套的用户对象进行比较

var user = new Parse.User();

// Set your id to desired user object id
user.id = your-user-id;

var query = new Parse.Query('Pictures');

// This include will make your query resut comes with the full object
// instead of just a pointer
query.include('user');

// Now you'll compare your local object to database objects
query.equalTo('user', user);
query.find({
    success: function(userPicture) {
        response.success(userPicture);
    }
});

无论如何,如果您有许多与用户相关的图片,您可能正在搜索解析关系,而不是指针:

如果您编写一个查询来检索父对象和子对象,您有指针,但根据ACL没有读取权限,然后查询可能只返回父对象,子对象将为null,因为ACL不允许您读取它。

您的参数可能有问题。如果“user”是指针,则“request.params.user”不正确,因为PFObjects可能不会作为params发送。如果“user”是指针,请使用“request.user”。如果request.params.user是userId的字符串,您可以按照Murilo的建议,在查询之前使用该Id重新构造PFObject shell,但删除“user”参数并使用request.user会缩短代码,并且不会复制任何值。Murilo的解决方案也很有用,因为您可以传递当前用户Id以外的用户Id。

阅读解析javascript文档的“关系查询”部分。使用关系查询而不是常规查询如果对象属于指针,那么还有什么指针?如何将其包含到查询中?关于最后一个建议:在客户端上使用的关系。这对后端有什么帮助?