Json 添加关系时的环回问题
我有一个环回API,其中我有一个,我正试图添加一些关系到我的模型(使用),但当涉及到添加关系到container.js时,它不再工作,我得到以下错误: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)
/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",