Sails.js 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_

我是个新手。正在尝试将我的应用程序后端更改为sailsjs。有一个我需要使用的现有数据库。尝试使用一对多关联时出现此空错误:

{
  "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'
}