环回mongodb连接器principalId存储为字符串

环回mongodb连接器principalId存储为字符串,mongodb,loopbackjs,Mongodb,Loopbackjs,我正在使用mongodb连接器的环回。当执行查询以查找分配给用户的所有角色时,响应不返回任何内容 // Find all users $scope.displayUsers = []; $scope.loading = true; $scope.users = User.find({ include: ['roles'] }, function() { $scope.displayUsers.concat($scope.users); $scope.loading

我正在使用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时,查询似乎可以工作

我在这里发现了一个类似的问题:


我试着按照这些建议去做,但似乎并没有解决我的问题。是否有人找到了类似问题的解决方案?

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

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

根据您的项目,也许您可以将objectId值映射到字符串类型?我在我的项目中就是这么做的
RoleMapping.find({where:{principalId:user.id.toString()}})