Mysql ER_BAD_FIELD_ERROR 在带环回的 findOne 上

Mysql ER_BAD_FIELD_ERROR on findOne with loopback

我目前正在使用 AngularJS、Loopback 和 MySQL 构建一个网络应用程序。它工作了一段时间,最近我从前端发出的大部分环回请求开始因内部服务器错误而失败。

Error: ER_BAD_FIELD_ERROR: Unknown column 'scopes' in 'field list'

我正在使用 Loopback Angular SDK 在前端发出请求。我真的不明白为什么它要搜索列范围,因为当我有它的 ID 时我调用它来搜索用户。

    $scope.user = !$scope.isLoggedIn ? {} : Appuser.findOne({
    filter: {
      where: { id: Appuser.getCurrentId() }
    }
  }).$promise.then(function(res){
    $scope.user = res;
  });

我最近开始在此应用程序上使用 webpack,并且最近还重新安装了我的所有节点模块,我不知道它是否有影响,但我怀疑是这样,因为当我恢复到提交时时间一切正常,问题仍然存在。但是,由于我正在为我的模块使用 npm 和 package.json,所以我不明白可能出了什么问题。

经过更多研究,我找到了答案。这是 npm 的一个问题,它安装了错误版本的 loopback,因为我没有修复我的依赖项版本号,并且在我需要 "loopback": "3.0.0", 时有 "loopback": "^3.0.0"^ 意味着 npm 可能会采用更新的次要版本,在我的情况下发生了这种情况并完全中断了我与数据库的连接。

如果其他人发生过这种情况,请不要忘记删除并重新安装您的节点模块。

我在下面解决了(我使用的是 mysql 连接器)

ALTER TABLE AccessToken ADD COLUMN `scopes` TEXT NULL;

我在 ./node_modules/loopback/common/models/access-token.json 找到了新字段。

"scopes": {
    "type": ["string"],
    "description": "Array of scopes granted to this access token."
}