0

我正在尝试获取已登录用户的联系人列表,但我不知道如何找到当前用户。我从 Parse.com 知道你使用 Parse.User.current() Stackmob 有这样的东西吗?

下面的代码演示我在寻找什么。

$(window).load(function () {
        var user = StackMob.User;
        var Contacts = StackMob.Model.extend({ schemaName: 'contacts' });
        var myContacts = new Contacts();
        var q = new StackMob.Collection.Query();
        q.equals('sm_owner', user);
        q.orderAsc('FirstName'); //sort by title in ascending order
        q.setRange(0, 9); //get the first 10.  second 10 would be setRange(10,19)
        myContacts.query(q, {
            success: function (model) {
                console.debug(model.toJSON()); //JSON array of matching Todo objects
            },
            error: function (model, response) {
                console.debug(response);
            }
        });
    });

我使用下面的代码得到了我想要的东西,但是拥有 ('sm_owner','user/thomas') 有点没用。

$(window).load(function () {            
        var Contacts = StackMob.Model.extend({ schemaName: 'contacts' });
        var myContacts = new Contacts();
        var q = new StackMob.Collection.Query();
        q.equals('sm_owner', 'user/thomas');
        q.orderAsc('FirstName'); //sort by title in ascending order
        q.setRange(0, 9); //get the first 10.  second 10 would be setRange(10,19)
        myContacts.query(q, {
            success: function (model) {
                console.debug(model.toJSON()); //JSON array of matching Todo objects
            },
            error: function (model, response) {
                console.debug(response);
            }
        });
    });
4

1 回答 1

1

听起来您想使用 StackMob 的架构权限来执行此操作。

例如,您可以设置权限,以便您的用户只能读取contact他们自己创建的对象。

当用户创建对象时,该sm_owner字段会自动设置为当前登录的用户。要利用这一点,您可以将contacts架构设置为仅允许用户读取他们自己的联系人。这样,当前用户的过滤是在服务器端完成的,您不必在客户端专门查询它。

如何设置:

转到架构配置和编辑选择您的架构。在架构权限下,Logged In Permissions -> Allow to sm_owner选择ReadUpdateDelete

现在,当您查询contacts架构时,只会返回contact( sm_owner== 当前用户) 的对象。然后你可以简单地删除这一行:

q.equals('sm_owner', 'user/thomas');
于 2013-05-30T18:47:57.290 回答