限制查询以获取具有特定指针的所有项目(JavaScript - Parse.com)

时间:2016-02-04 22:51:01

标签: javascript parse-platform collections

BlogApp.Collections.Blogs = Parse.Collection.extend({
    model: BlogApp.Models.Blog,
    query: (new Parse.Query(BlogApp.Models.Blog)).equalTo("author", "xMQR0A1Us6").descending('createdAt').limit(9)
});

以上似乎不起作用。我可以使用类中已存在的列来执行各种操作,例如.equalTo("productType", "SHIRT"),但我无法链接到单独的类User中存在的作者。

如何限制查询只检索“作者”(指针)中的项目,该项目等于User类中存在的objectId?

型号:

BlogApp.Models.Blog = Parse.Object.extend('MarketDesign', {

    update: function(form) {

        if ( !this.get('ACL') ) {
            var blogACL = new Parse.ACL(Parse.User.current());
            blogACL.setPublicReadAccess(true);
            this.setACL(blogACL);
        }

        BlogApp.category.id = form.category;

        this.set({
            'title': form.title,
            'url': form.title.toLowerCase()
            .replace(/[^\w ]+/g,'')
            .replace(/ +/g,'-'),
            'category': BlogApp.category,
            'comment': form.content,
            'author': this.get('author') || Parse.User.current(),
            'authorName': this.get('authorName') || Parse.User.current().get('username'),
            'time': this.get('time') || new Date().toDateString()
        }).save(null, {
            success: function(blog) {
                Parse.history.navigate('#/admin', { trigger: true });
                window.location.reload();
            },
            error: function(blog, error) {
                console.log(error);
            }
        });
    }

});

2 个答案:

答案 0 :(得分:1)

objectId(只是一个字符串)与指针之间存在区别。要在查询中等同Pointer列,您必须传递一个parse对象。因此,例如,找到作者是当前用户的博客......

var user = Parse.User.current();   // no .id, that's important!
BlogApp.Collections.Blogs = Parse.Collection.extend({
    model: BlogApp.Models.Blog,
    query: (new Parse.Query(BlogApp.Models.Blog)).equalTo("author", user).descending('createdAt').limit(9)
});

如果你只有objectId,那么用它构建一个对象,如下所示:

var user = Parse.User.createWithoutData("xMQR0A1Us6"); 

但我不推荐这个。如果你有一个对象id,你必须拥有它所属的整个对象。通常,将保留对象ID作为练习;相反,保留它们所属的对象,以便以后可以使用它们的任何部分。

答案 1 :(得分:0)

我做了一些研究,发现你不能使用.equalTo方法查询指向类中的元素:https://coderwall.com/p/-uzbrq/multi-dimensional-querying-parse-com-javascript-sdk

这不是答案,因为它并没有解决我的问题,但希望其他人会看到这一点并更好地了解我想要完成的事情:

BlogApp.Collections.UserDesigns = Parse.Collection.extend({
    model: BlogApp.Models.Blog,
    query: (new Parse.Query(BlogApp.Models.Blog)).matchesQuery("author", Parse.User.current().id).descending('createdAt').limit(3)
});