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