2016-01-02 16 views
13

sequelize ORM ile bir sails.js uygulaması geliştiriyorum. Ben Ait ve HasOne'nin kullanılması gerektiğinde biraz kafam karıştı. bire-bir ilişki için yabancı anahtar kaynak modeline var olduğu dernekler dernekler vardırSequelize ORM içinde HasOne ve AitOF arasındaki fark

belongsTo:

dokümantasyon

belirtiyor. bire-bir ilişki için yabancı anahtar hedef modeline var olduğu

HasOne dernekler dernekler bulunmaktadır.

Bunların belirtildiği yer dışında başka bir fark var mı? Davranış her iki durumda da aynı olmaya devam ediyor mu?

cevap

24

Bu daha evrensel bir sorundur.

Temel fark, anlamsaldır. ilişkinin ne olduğuna karar vermelisiniz (Bazı aptalca örnek):

İnsan sadece bir sağ koluna sahiptir. Sağ kol bir adama ait.

o ters biraz garip görünüyor söyleyen:

Sağ kol bir adam vardır. Bir adam sağ koluna ait.

Sağ kolsuz bir adamın olabilir. Ama tek başına sağ kol işe yaramaz. sequelize olarak

RightArm ve Erkekler modelleri ise, o olabilir görünüyor gibi:

Man.hasOne(RightArm); 
RightArm.belongsTo(Man); 

Ve db tablo yapısında fark vardır fark gibidir:

belongsTo üzerinde ForeignKey katacak hasOne hedefe eklenecek kaynak (Sequelize, 'RightArm' tablosunda 'ManId' yeni sütun oluşturur, ancak 'Man' tablosunda 'RightArmId' sütununu oluşturmaz).

Başka fark görmüyorum.

+0

Bu durumda, ya "Man.hasOne (RightArm)" veya "RightArm.belongsTo (Man);" kullanmalı mıyım? Yoksa ikisini de mi kullanıyorsunuz? –

+0

Çoğu durumda ikisini de kullanırdım –

İlgili konular