2015-06-11 23 views
8

Waterline to doskonała ORM, ale zauważyłem, że istnieje wiele funkcji, które nie są jeszcze obecne na linii wodnej, ale Sequelize już istnieją. Zdecydowałem więc przejść na sequelize, ale nadal używam Sails dla innych rzeczy. Mam samouczek wyszukiwania, jak przejść do sequelize, ale nic. Jak mogę zastąpić Waterline, aby uzyskać sequelize w żagle Js?Jak korzystać z Sequelize in SailsJs

+0

Sprawdź ten artykuł na https://groups.google.com/d/msg/sailsjs/ALMxbKfnCIo/H2RcRUnnFGEJ autorstwa Manuela Darveau. –

Odpowiedz

11

Posunąłem się również do przodu z sequelem, są dwa projekty, które pojawiły się niedawno, więc chciałbym je ogłosić.

sails-hook-sequelize:

Wynika odpowiedź Manuel Darveau będzie pobrać wszystkie swoje modele, import za pośrednictwem sequelize i służy swoje modele jako zmienne globalne, można wymusić synchronizację sequelize z tej samej drodze z migrate: 'drop'

sails-hook-sequelize-blueprints

Żagle plany uratował mi dużo czasu, więc już napisał widelec pracować sequelize, to działa w ten sam sposób, niż pierwotne plany, a ty nadal mają te same konfiguracje, takie jak plany rest, shortcuts, prefix i tak dalej, ponieważ modele z funkcją wypełniania linii wodnej z funkcją populateEach() używają include: [{ all: true }], której wynik jest taki sam.

pełny przykład:

$ npm install sails-hook-sequelize 
$ npm install sails-hook-sequelize-blueprints 
$ npm install sequelize 
$ npm install pg pg-hstore 
$ npm install continuation-local-storage 

.sailsrc

"hooks": { 
    "blueprints": false, 
    "orm": false, 
    "pubsub": false 
} 

connections.js

somePostgresqlServer: { 
    user: 'postgres', 
    password: '', 
    database: 'database', 
    dialect: 'postgres', 
    options: { 
     dialect: 'postgres', 
     host : 'localhost', 
     port : 5432, 
     logging: true 
    } 
} 

Twoja definicja modelu

// user.js 
module.exports = { 
    attributes: { 
    name: { 
     type: Sequelize.STRING, 
     allowNull: false 
    }, 
    age: { 
     type: Sequelize.INTEGER 
    } 
    }, 
    associations: function() { 
    user.hasMany(image, { 
     foreignKey: { 
     name: 'owner', 
     allowNull: false 
     } 
    }); 
    }, 
    options: { 
    tableName: 'user', 
    classMethods: {}, 
    instanceMethods: {}, 
    hooks: {} 
    } 
}; 

To wszystko.

+1

Czy to też umożliwia sekwencjonowanie migracji? – nahtnam

+0

Sequelize migrations faktycznie działa z CLI, więc można wykonywać migracje w dowolnym miejscu, wystarczy plik config/config.json zawierający połączenia z bazą danych, wygenerować plik migracji, dodać kilka kolumn i gotowe. – FXCesinha

+0

@FXCesinha, co mam zrobić, gdy chcę korzystać z wielu połączeń. http://stackoverflow.com/questions/36565379/use-multiple-datastore-connections-with-sequelize?noredirect=1#comment60735265_36565379 – Milkncookiez