Вложенные модели Sails.js
Вопрос
Вails.js 0.10 я пытаюсь сделать следующее
// user.js
module.exports = {
attributes: {
uuid: {
type: 'string',
primaryKey: true,
required: true
} ,
profile: {
firstname: 'string',
lastname: 'string',
birthdate: 'date',
required: true
}
}
};
Я получаю сообщение об ошибке при попытке создать пользователя, иailsJS не распознает атрибут «профиль».Я не уверен, поддерживает ли Sails вложенную структуру JSON, а если да, то я не знаю, как ее структурировать.
error: Sent 500 ("Server Error") response
error: Error: Unknown rule: firstname
Я пробовал следующее, но это тоже не удалось
// user.js
module.exports = {
attributes: {
uuid: {
type: 'string',
primaryKey: true,
required: true
} ,
profile: {
firstname: {type: 'string'},
lastname: {type: 'string'},
birthdate: 'date',
required: true
}
}
};
Я знаю, что вailsJS 0.10 есть атрибут «JSON», но не знаю, как он подойдет к этому модулю.
Решение
Waterline не поддерживает определение вложенных схем, но вы можете использовать json
введите для хранения внедренных объектов в вашей модели.Итак, вы бы сделали:
profile: {
type: 'json',
required: true
}
И тогда вы можете создавать экземпляры пользователей, например:
User.create({profile: {firstName: 'John', lastName: 'Doe'}})
разница в том, что firstName
и lastName
поля не будут проверены.Если вы хотите проверить, что схема встроенного profile
объект соответствует тому, что вы хотите, вам придется реализовать beforeValidate()
обратный вызов жизненного цикла в классе вашей модели:
attributes: {},
beforeValidate: function(values, cb) {
// If a profile is being saved to the user...
if (values.profile) {
// Validate that the values.profile data matches your desired schema,
// and if not call cb('profile is no good');
// otherwise call cb();
}
}
Другие советы
После последующей