Sails.js Sailsjs是一对多的空结果
我是个新手。正在尝试将我的应用程序后端更改为sailsjs。有一个我需要使用的现有数据库。尝试使用一对多关联时出现此空错误:Sails.js Sailsjs是一对多的空结果,sails.js,waterline,Sails.js,Waterline,我是个新手。正在尝试将我的应用程序后端更改为sailsjs。有一个我需要使用的现有数据库。尝试使用一对多关联时出现此空错误: { "Result": [ { "newCars": [], "name": 'Someone', "id": 1 } ] } 以下是我拥有的两个示例表的结构: table user id | name 1 | Someone table new_car name | user_
{
"Result": [
{
"newCars": [],
"name": 'Someone',
"id": 1
}
]
}
以下是我拥有的两个示例表的结构:
table user
id | name
1 | Someone
table new_car
name | user_id
Audi | 1
BMW | 1
型号:
(我不确定名称-关联、收集和通过)
控制器:
Role.find(1).populate('newCars').exec(function (err, result){
res.json({Result: result});
});
我也在评论中添加了一些问题。您需要将
收藏
名称更改为新车
。在Sails
中,无论何时通过在中引用模型,集合
,模型
,都需要使用小写名称。阅读更多
注意
您需要允许Sails
创建自己的关联表。例如,您需要创建模型User
和Car
,并让Sails
为您进行映射。这是通过在内部创建一个User\u-Car
(不一定是相同的名称)表来完成的,该表将User\u-id
映射到Car-id
。这可以通过使用创建两个api
来实现
$sails生成api用户
$sails生成api汽车
现在,您的模型看起来像:
//User.js
module.exports = {
attributes: {
name: 'string',
cars: {
collection: 'car',
via: 'user'
}
}
};
// Car.js
module.exports = {
attributes: {
name: 'string',
user: {
model: 'user'
}
}
};
现在,您可以通过向/User
发送httppost
和向/Car
发送汽车来创建用户
要创建关联,请向/User/:id/Car/:id
现在,当您通过get/User/:id
获取用户的详细信息时,将填充用户[:id]
拥有的所有汽车。这可能对像我这样的新手有用。只需要识别主键和外键
//at the one side
id: {
type: 'integer',
primaryKey: true
}
//at the many side
user: {
columnName: 'user_id',
model: 'user'
}
谢谢,但是在做了你建议的改变之后还是没有运气。查看我的表结构和您的注释,“via”应该是“user”还是“user\u id”。注意,也尝试将其更改为user_id,但结果仍然为空:(是由Sails
适配器创建的user_id
字段吗?否,我的数据库在尝试sailsjs.user(id,name)和new_car(name,user_id)之前就存在了)我已经编辑了我的答案,您的表结构应该更改。这只是一个简化我面临的问题的示例。我的实际数据库是遗留的,而且很大,不能更改其结构,因为其他API也在访问它。您的意思是有一种方法可以只更新现有表结构而不更改太多或影响数据吗?知道吗?
//at the one side
id: {
type: 'integer',
primaryKey: true
}
//at the many side
user: {
columnName: 'user_id',
model: 'user'
}