Używam Sequelize dla mojego serwera (z mysql dialektem); w dokumentacji Sequelize jest napisane, że:Klucze obce z Sequelize nie są tworzone
var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING })
User.hasMany(Task)
Task.belongsTo(User)
tworzy automatycznie klucze obce z ograniczeniami; ale dla mnie to nie nastąpi:
var Shop = sequelize.define('Shop', {
name: Sequelize.STRING,
address: Sequelize.STRING,
phone: Sequelize.STRING,
email: Sequelize.STRING,
percentage: Sequelize.FLOAT,
text: Sequelize.TEXT,
categories: Sequelize.TEXT,
start: Sequelize.DATE,
end: Sequelize.DATE
});
var Offer = sequelize.define('Offer', {
name: Sequelize.STRING,
deadline: Sequelize.DATE,
optionDuration: Sequelize.INTEGER
});
Shop.hasMany(Offer);
Offer.belongsTo(Shop);
Stwarza to dwie tablice sklepów i oferty, zarówno z nich tylko „id” klucza podstawowego
Mam też trochę n: m stowarzyszeń, takich jak:
Group.hasMany(Accesslevel);
Accesslevel.hasMany(Group);
ale również w tym przypadku w tabeli sprzężenia, którą tworzy Sequelize, nie ma klucza obcego; , więc jeśli usunę to za przykład. jeden poziom, niż odpowiadające rekordy w grupach dostępu accesslevelsgroups nie są usuwane.
Czy ktoś wie, czy robię coś złego, czy czegoś brakuje? Co potrzebne jest do stworzenia wszystkich kluczy obcych dla stowarzyszeń i możliwość określenia zachowania „” oraz „OnDelete onUpdate” (kaskadowy)
- UPDATE Utworzyłem drogę do wykonywania synchronizacji:
myServer.get('/sync', function (req, res) {
sequelize.sync({force: true}).success(function() {
console.log('sync done');
res.send(200, 'sync done');
}).error(function(error) {
console.log('there was a problem');
res.send(200, 'there was a problem');
});
});
Więc w przeglądarce wpisuję 127.0.0.1:port/sync aby utworzyć strukturę db
wsparcie robi sequelize zagranicznych keys.You trzeba je stworzyć samemu. – mpm
@mpm To jest blatelnly niepoprawne, http://sequelizejs.com/docs/1.7.8/associations#foreign-keys –
@ WillemD'haeseleer dobrze, że tak było, kiedy go użyłem, cieszę się, że jest teraz obsługiwane. – mpm