【问题标题】:Loopback mongodb-connector principalId stored as stringLoopback mongodb-connector principalId 存储为字符串
【发布时间】:2015-02-27 10:36:31
【问题描述】:

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

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

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

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

我已尝试按照建议进行操作,但似乎无法解决我的问题。有没有人找到类似问题的解决方案?

【问题讨论】:

  • 取决于您的项目,也许您可​​以将 objectId 值映射到字符串类型?我在我的项目中这样做了。 RoleMapping.find({where: {principalId: user.id.toString()}})

标签: mongodb loopbackjs


【解决方案1】:

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,
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2020-05-19
    • 2017-04-16
    相关资源
    最近更新 更多