单向关联(One Way Association)

概述

单向关联就是一个模型关联到另一个模型。你可以查询该模型并提供所关联的模型。但是,你不能查询被关联的模型并提供关联它的模型。

单向关联例子

在这个例子中,我们关联了一个 UserPet,而不是 PetUser

myApp/api/models/pet.js

  1. module.exports = {
  2. attributes: {
  3. name:'STRING',
  4. color:'STRING'
  5. }
  6. }

myApp/api/models/user.js

  1. module.exports = {
  2. attributes: {
  3. name:'STRING',
  4. age:'INTEGER',
  5. pony:{
  6. model: 'pet'
  7. }
  8. }
  9. }

使用 sails console

  1. sails> Pet.create({name:'Pinkie Pie',color:'pink'}).exec(console.log)
  2. null { name: 'Pinkie Pie',
  3. color: 'pink',
  4. createdAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST),
  5. updatedAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST),
  6. id: 5 }
  7. sails> User.create({name:'Mike',age:21,pony:5}).exec(console.log);
  8. null { name: 'Mike',
  9. age: 21,
  10. pony: 5,
  11. createdAt: Tue Feb 11 2014 15:48:53 GMT-0600 (CST),
  12. updatedAt: Tue Feb 11 2014 15:48:53 GMT-0600 (CST),
  13. id: 1 }
  14. sails> User.find({name:'Mike'}).populate('pony').exec(console.log);
  15. null [ { name: 'Mike',
  16. age: 21,
  17. pony:
  18. { name: 'Pinkie Pie',
  19. color: 'pink',
  20. id: 5,
  21. createdAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST),
  22. updatedAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST) },
  23. createdAt: Tue Feb 11 2014 15:48:53 GMT-0600 (CST),
  24. updatedAt: Tue Feb 11 2014 15:48:53 GMT-0600 (CST),
  25. id: 1 } ]

注意事项

请查看 Waterline 文件取得这种类型的关联的更多资讯

因为我们只形成一个关联于一个模型,Pet 没有归属于 User 模型的数量限制。如果我们想要,我们可以改变这一点,让 Pet 正好关联到一个 User ,且 User 正好关联到一个 Pet