Json 添加关系时的环回问题

Json 添加关系时的环回问题,json,node.js,models,loopbackjs,Json,Node.js,Models,Loopbackjs,我有一个环回API,其中我有一个,我正试图添加一些关系到我的模型(使用),但当涉及到添加关系到container.js时,它不再工作,我得到以下错误: /home/mowso/Documents/loopback-examples/test/node_modules/loopback-datasource-juggler/lib/datasource.js:434 modelClass[relation.type].call(modelClass, name, params)

我有一个环回API,其中我有一个,我正试图添加一些关系到我的模型(使用),但当涉及到添加关系到container.js时,它不再工作,我得到以下错误:

/home/mowso/Documents/loopback-examples/test/node_modules/loopback-datasource-juggler/lib/datasource.js:434
          modelClass[relation.type].call(modelClass, name, params);
                                   ^

TypeError: Cannot read property 'call' of undefined
    at EventEmitter.<anonymous> (/home/mowso/Documents/loopback-examples/test/node_modules/loopback-datasource-juggler/lib/datasource.js:434:36)
    at EventEmitter.g (events.js:260:16)
    at emitOne (events.js:77:13)
    at EventEmitter.emit (events.js:169:7)
    at DataSource.setupDataAccess (/home/mowso/Documents/loopback-examples/test/node_modules/loopback-datasource-juggler/lib/datasource.js:540:14)
    at DataSource.attach (/home/mowso/Documents/loopback-examples/test/node_modules/loopback-datasource-juggler/lib/datasource.js:752:8)
    at Function.ModelClass.attachTo (/home/mowso/Documents/loopback-examples/test/node_modules/loopback-datasource-juggler/lib/model-builder.js:336:16)
    at Registry.configureModel (/home/mowso/Documents/loopback-examples/test/node_modules/loopback/lib/registry.js:238:15)
    at configureModel (/home/mowso/Documents/loopback-examples/test/node_modules/loopback/lib/application.js:441:16)
    at EventEmitter.app.model (/home/mowso/Documents/loopback-examples/test/node_modules/loopback/lib/application.js:133:5)
和my user.json:

{
  "name": "user",
  "base": "User",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {},
  "validations": [],
  "relations": {
    "containers": {
      "type": "hasOne",
      "model": "Container",
      "foreignKey": "ownerId"
    },
    "companies": {
      "type": "hasOne",
      "model": "company",
      "foreignKey": "ownerId"
    }
  },
  "acls": [],
  "methods": {}
}
以下是model-config.json:

{
  "_meta": {
    "sources": [
      "loopback/common/models",
      "loopback/server/models",
      "../common/models",
      "./models"
    ],
    "mixins": [
      "loopback/common/mixins",
      "loopback/server/mixins",
      "../common/mixins",
      "./mixins"
    ]
  },
  "User": {
    "dataSource": "db"
  },
  "AccessToken": {
    "dataSource": "db",
    "public": false
  },
  "ACL": {
    "dataSource": "db",
    "public": false
  },
  "RoleMapping": {
    "dataSource": "db",
    "public": false
  },
  "Role": {
    "dataSource": "db",
    "public": false
  },
  "Container": {
    "dataSource": "myfile",
    "public": true
  },
  "user": {
    "dataSource": "db",
    "public": false
  },
  "company": {
    "dataSource": "db",
    "public": false
  }
}
最后是我的datasource.json,请注意,我在项目的根目录下有一个存储文件夹:

{
  "db": {
    "name": "db",
    "connector": "mongodb"
  },
  "myfile": {
    "name": "myfile",
    "connector": "loopback-component-storage",
    "provider": "filesystem",
    "root": "storage"
  }
}

根据文档,您的外键不正确

关系名称:模型名称的大小写,例如,“供应商”模型的关系为“供应商”

外键:附加了“Id”的关系名称,例如,对于关系名称“supplier”,默认外键为“supplierId”

所以你的情况应该是这样的

"foreignKey": "userId"


您应该使用slc关系,而不是编辑json文件。

我认为
容器
应该继承
模型
,而不是
持久化模型
。默认情况下,容器是文件系统中的文件夹,因此无法选择是否持久化它

 {
    "name": "Container",
    "base": "Model",

您能同时显示
server/model config.json
文件吗?现在已经很长了:p但它已经完成@OverdrivrAnd,还可以显示server/datasources.json中数据源“myfile”的定义吗?看看stacktrace,我相信它可能来自错误配置的数据source@Overdrivr我受够了我不知道你说的是什么。我确实使用了
slc loopback:relation
命令,关于我的foreignKey的名字,我只是遵循loopback文档中的loopback示例acces control教程。这里一定没有任何问题。无论如何,我尝试更改了foreignKey的名称,但这并不能解决问题。我不认为外键会导致服务器启动错误。这是我以前遇到的情况(就像在教程中一样),我更改了它以查看它是否有效,但忘记了将其更改回来。我曾经也犯过同样的错误:(如果你的存储库是公开的,我可以尝试尝试一下。如果不是,我建议你在环回谷歌群上发表文章,你将更有可能从核心开发者那里得到答案。遗憾的是,事实并非如此。谢谢你抽出时间,那么我将尝试环回谷歌群。
 {
    "name": "Container",
    "base": "Model",