ReferenceError:g未定义环回扩展模型

问题描述 投票:0回答:2

我和my previous question有一个几乎相同的问题。创建user模型时,将返回以下错误:

ReferenceError: g is not defined
    at new ModelConstructor (eval at createModelClassCtor (/usr/src/app/node_modules/loopback-datasource-juggler/lib/model-builder.js:671:21), <anonymous>:10:27)
    at user.ModelBaseClass._initProperties (/usr/src/app/node_modules/loopback-datasource-juggler/lib/model.js:349:28)
    at user.ModelBaseClass (/usr/src/app/node_modules/loopback-datasource-juggler/lib/model.js:60:8)
    at user.Model (eval at createModelClassCtor (/usr/src/app/node_modules/loopback-datasource-juggler/lib/model-builder.js:671:21), <anonymous>:12:24)
    at user.PersistedModel (eval at createModelClassCtor (/usr/src/app/node_modules/loopback-datasource-juggler/lib/model-builder.js:671:21), <anonymous>:12:24)
    at user.User (eval at createModelClassCtor (/usr/src/app/node_modules/loopback-datasource-juggler/lib/model-builder.js:671:21), <anonymous>:12:24)
    at new user (eval at createModelClassCtor (/usr/src/app/node_modules/loopback-datasource-juggler/lib/model-builder.js:671:21), <anonymous>:12:24)
    at Function.DataAccessObject.create (/usr/src/app/node_modules/loopback-datasource-juggler/lib/dao.js:359:13)
    at /usr/src/app/node_modules/loopback-datasource-juggler/lib/dao.js:1262:13
    at /usr/src/app/node_modules/loopback-datasource-juggler/lib/dao.js:2175:62
    at /usr/src/app/node_modules/loopback-datasource-juggler/lib/dao.js:2111:9
    at /usr/src/app/node_modules/loopback-datasource-juggler/node_modules/async/dist/async.js:1012:9
    at /usr/src/app/node_modules/loopback-datasource-juggler/node_modules/async/dist/async.js:359:16
    at eachOfArrayLike (/usr/src/app/node_modules/loopback-datasource-juggler/node_modules/async/dist/async.js:928:9)
    at eachOf (/usr/src/app/node_modules/loopback-datasource-juggler/node_modules/async/dist/async.js:990:5)
    at _asyncMap (/usr/src/app/node_modules/loopback-datasource-juggler/node_modules/async/dist/async.js:1005:5)
    at Object.map (/usr/src/app/node_modules/loopback-datasource-juggler/node_modules/async/dist/async.js:995:16)
    at allCb (/usr/src/app/node_modules/loopback-datasource-juggler/lib/dao.js:2025:13)
    at /usr/src/app/node_modules/loopback-connector-mongodb/lib/mongodb.js:1155:9
    at result (/usr/src/app/node_modules/mongodb/lib/utils.js:414:17)
    at executeCallback (/usr/src/app/node_modules/mongodb/lib/utils.js:406:9)
    at handleCallback (/usr/src/app/node_modules/mongodb/lib/utils.js:128:55)

这是我的模特:

user.json:

{
  "name": "user",
  "plural": "users",
  "base": "User",
  "idInjection": false,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "id": {
      "type" : "string",
      "id" : true,
      "required" : true,
      "defaultFn" : "guid"
    },
    "type": {
      "type" : "[string]",
      "required" : true,
      "default" : ["student"]
    },
    "full_name": {
      "type": "string",
      "required": false
    },
    "office" : {
      "type": "string",
      "required" : false
    },
    "profile_img": {
      "type": "string",
      "required": false
    },
    "departmentId": {
      "type": "string",
      "required": false
    }
  },
  "validations": [],
  "relations": {
    "department": {
      "type": "belongsTo",
      "model": "department"
    },
    "syncedcalendar" : {
      "type" : "hasMany",
      "model" : "syncedcalendar"
    },
    "accessTokens": {
       "type": "hasMany",
       "model": "accessToken",
       "foreignKey": "userId",
        "options": {
          "disableInclude": true
        }
     }
  },
  "acls": [],
  "methods": {}
}

accessToken.json

{
  "name": "accessToken",
  "plural": "accessTokens",
  "base": "AccessToken",
  "properties": {},
  "validations": [],
  "idInjection": false,
  "relations": {
    "user": {
      "type": "belongsTo",
      "model": "user",
      "foreignKey": "userId"
    }
  },
  "acls": [],
  "methods": []
}
loopbackjs
2个回答
0
投票

上面的错误(在这种情况下和我之前的问题)都是因为loopback无法解析模型的json文件。在这种情况下,它是typeuser属性:

"type": {
  "type" : "[string]",
  "required" : true,
  "default" : ["student"]
},

似乎default不能是一个阵列。删除此默认值并在挂钩中强制执行此默认值可解决此问题。


0
投票

我经历了一个类似于你的问题。是的,错误堆栈提供的有用信息太少。它应该说:“请坚持Loopback类型”,因为这是问题所在。你被Loopback types困住了。

在您的情况下,解析器无法处理数组。好吧,事实证明它也不会解析未识别的类型字符串。例如,如果您尝试将属性声明为qazxsw poi:

integer

它将抛出,因为本机类型是 "id": { "type": "Integer", <----- not a loopback type "id": 1, "mysql": { "columnName": "id", "dataType": "int", } }, 。你可以Number它作为整数,但不要乱用它的format

type

如果您的数据库值类似于json(因此它们应该作为数组和对象重新出现),只需将它们声明为Objects。

© www.soinside.com 2019 - 2024. All rights reserved.