Reputation: 2274
anyone used node's sails framework using mysql as DB (https://github.com/balderdashy/sails-mysql)?
I am stuck in models, I can't create the database structure.The datatypes that I need to use to create the schema doesn't work. I've searched everywhere for some documentation, but i can't find anything that can help me.
Sail's documentation is not yet complete, i guess. http://sailsjs.org/#documentation/models
Can anyone please help me in creating models. I would highly appreciate if you can help me create the simple schema below using sails-mysql. Thanks in advance!
module.exports = {
attributes: {
id: 'FLOAT',
social_network: {
type: 'ENUM',
defaultsTo : {'Facebook', 'twitter', 'vk','weibo'}
},
country: 'STRING',
message: 'TEXT',
link: 'STRING',
comments: 'TEXT',
userid: 'INT',
username: 'STRING',
image_link: 'STRING',
longitude: 'FLOAT',
latitude: 'FLOAT',
location_name: 'STRING',
updated_at: 'TIMESTAMP',
created_at: 'TIMESTAMP'
}
};
Upvotes: 7
Views: 7427
Reputation: 2416
I am the author of Waterline, sorry you couldn't find what you needed in the docs, we are constantly working on adding to them and keeping them up to date.
You are very close on your schema. Waterline currently doesn't support a database level ENUM
type but we have validations that will allow you to end up with the same end result.
module.exports = {
// Disables Automatic ID generation
// (allows you to use a FLOAT type for your ID)
autoPK: false,
// Disables Automatic Timestamps
// You will need to manually update your timestamps, usually best to leave this
// on and remove the updated_at and created_at attributes below to let Waterline
// keep these up to date for you
autoCreatedAt: false,
autoUpdatedAt: false,
attributes: {
id: {
type: 'FLOAT',
primaryKey: true
}
// Proper ENUM types at the Database level are not yet supported
// but you can use validations to achieve the same end result.
// You can also add a default social_network with defaultsTo
social_network: {
type: 'STRING',
in: ['facebook', 'twitter', 'vk', 'weibo']
},
country: 'STRING',
message: 'TEXT',
link: 'STRING',
comments: 'TEXT',
userid: 'INTEGER',
username: 'STRING',
image_link: 'STRING',
longitude: 'FLOAT',
latitude: 'FLOAT',
location_name: 'STRING',
// Timestamp is not supported but Time, Date, and DateTime are
updated_at: 'DATETIME',
created_at: 'DATETIME'
}
};
Upvotes: 27