var roleQuery = new AV.Query(AV.Role);
// 查询当前用户拥有的角色
roleQuery.equalTo('users', AV.User.current());
roleQuery.find().then(function(roles) {
console.log('roles',roles);
// roles 是一个 AV.Role 数组,这些 AV.Role 表示当前用户所拥有的角色
}, function (error) {
});
AV.User.current()被弃用,那如何查询当前用户拥有的角色

你需要在代码中自行传递当前用户(例如作为函数参数),最初的用户对象可能来自 request.currentUser 或者 AV.User.login 等处。

我现在是使用AV.User.become(sessionToken).then(function(user) {
console.log(user);
}),去获取相应的登录用户的,但是这不是一个object,roleQuery.equalTo('users', 这个变量要求的好像是个object);

AV.User.become 返回的 user 是一个 AV.User 的实例呀,我不太理解你说的「这不是一个 object」是什么意思。

如果你是要查询 users 中包含该用户的 role,用 .equalTo('users', user) 应该是正确的。

var username;
router.options('/', cors(corsOptions));
router.get('/', cors(corsOptions), function(req, res, next) {
console.log(req.headers);
var sessionToken = req.headers['sessiontoken'];
AV.User.become(sessionToken).then(function(user) {
console.log(user);
var attributes = user.attributes;
username = attributes.username;
});
var roleQuery = new AV.Query(AV.Role);
// 查询当前用户拥有的角色
roleQuery.equalTo('users',username );
roleQuery.find().then(function(roles) {
console.log('roles',roles);
// roles 是一个 AV.Role 数组,这些 AV.Role 表示当前用户所拥有的角色
}, function (error) {
});
})
当上面的username改为AV.User.current(),则可以使用,username为一个string,AV.User.current()应该是一个object

你这个代码里 roleQuery 的部分应该放到 AV.User.become 的回调(.then)里,不然执行到 equalTo 的时候,username 还是空的。

现在的情况是var roleQuery = new AV.Query(AV.Role);
// 查询当前用户拥有的角色
roleQuery.equalTo('users',username );
roleQuery.find().then(function(roles) {
console.log('roles',roles);
// roles 是一个 AV.Role 数组,这些 AV.Role 表示当前用户所拥有的角色
}, function (error) {
});,这样返回的结果是role[],改成AV.User.current(),则返回roles [ constructor {
_serverData:
{ name: 'group_admin',
roleInfo: '组织管理员',
roles: [Object],
users: [Object] },
_opSetQueue: [ {} ],
attributes:
{ name: 'group_admin',
roleInfo: '组织管理员',
roles: [Object],
users: [Object] },
_hashedJSON:
{ ACL: '{"*":{"read":true}}',
roles: '{"_type":"Relation","className":"Role"}',
users: '{"_type":"Relation","className":"User"}' },
_escapedAttributes: {},
cid: 'c2',
changed: {},
_silent: {},
_pending: {},
_hasData: true,
_previousAttributes: { ACL: [Object] },
_changing: false,
id: '5aaa24e69f545448cf1e8466',
createdAt: 2018-03-15T07:46:46.237Z,
updatedAt: 2018-03-21T01:30:18.737Z } ],
两者是同一用户

不太懂你的意思,role[]roles 的区别是什么?

AV.User.become 返回的 user 和 AV.User.current() 返回的 user 打印出来的话有什么不同么?