Loopback mongodb-connector principalId存储为字符串

时间:2015-02-27 10:36:31

标签: mongodb loopbackjs

我正在使用带有mongodb连接器的Loopback。在执行查询以查找分配给用户的所有角色时,响应不返回任何内容。

// Find all users
$scope.displayUsers = [];
$scope.loading = true;
$scope.users = User.find({
        include: ['roles']
}, function() {
    $scope.displayUsers.concat($scope.users);
    $scope.loading = false;
});

我已将其缩小为principalId,将其存储为Rolemapping模型中的字符串,而userId的类型为ObjectId。当我在我的数据库中手动更改principalId类型ObjectId时,查询似乎有效。

我在这里找到了类似的问题:https://github.com/strongloop/loopback/issues/676

我试图遵循这些建议,但似乎并没有解决我的问题。有没有人找到类似问题的解决方案?

1 个答案:

答案 0 :(得分:0)

此问题已在issue #1441中报告。我找到了一个解决方法:

RoleMapping.belongsTo(User);
User.hasMany(RoleMapping, {foreignKey: 'principalId'});
Role.hasMany(User, {through: RoleMapping, foreignKey: 'roleId'});

var ObjectID = RoleMapping.getDataSource().connector.getDefaultIdType();
RoleMapping.defineProperty('principalId', {
  type: ObjectID,
});