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

zzl*_*ani 12 javascript parse-platform

我有一个解析的类,比如图片.这些中的每一个都属于用户.对此用户的引用存储在Pictures表/类中作为Pointer用户.

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

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);
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

例如,该代码输出对于id为'xyz'的特定用户有0张图片.但是,我可以看到用户存储了大量图片.

我还验证了问题不在于使用主密钥,因为我在控制台日志中看到代码正在作为主代码执行.而且,如果我查询图片objectId,它会在结果中出现,这意味着ACL不是问题.

我想我必须在这里使用关系/加入,但我不知道该怎么做.

Mur*_*ilo 26

指针在Parse数据库中存储为对象,因此如果您尝试将字符串与具有query.equalTo()函数的对象进行比较,则不会发现任何内容.这是指针的存储方式:

{
    __type: 'Pointer',
    className: '_User',
    objectId: user-object-id
}
Run Code Online (Sandbox Code Playgroud)

如果您正在查询带有指针的类并且希望您的结果是嵌套的整个对象,那么您应该在查询中设置它:

var query = new Parse.Query('Pictures');
query.include('user');
Run Code Online (Sandbox Code Playgroud)

在我想要通过指针列搜索的查询中,我将我的用户对象与嵌套的用户对象进行比较.

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

无论如何,似乎如果你有许多与用户相关的图片,你可能正在寻找解析关系而不是指针:https://www.parse.com/docs/relations_guide