Добавьте свойство к объекту, возвращаемому Sequelize FindOne
Я пытаюсь добавить свойство в экземпляр sequelize перед передачей его обратно клиенту.
router.get('/cats/1', function (req, res) {
Cat.findOne({where: {id: 1}})
.then(function (cat) {
// cat exists and looks like {id: 1}
cat.name = "Lincoln";
// console.log of cat is {id: 1, name: Lincoln}
res.json(cat);
});
});
клиент видит только {id: 1}
и не только что добавленный ключ.
- что здесь происходит?
- какой тип объекта возвращается Sequelize?
- как я могу добавить новые свойства к моим кошкам и отправить их обратно?
1 ответов
В Sequelize Model
класс (из которых ваши кошки являются экземплярами) имеет toJSON()
метод РЭС.JSON будет, вероятно, использовать, чтобы serialise вашей кошки. Метод возвращает результат Model#get()
(https://github.com/sequelize/sequelize/blob/95adb78a03c16ebdc1e62e80983d1d6a204eed80/lib/model.js#L3610-L3613), который использует только атрибуты, определенные в модели. Если вы хотите установить имя кошки, но не хранить имена в БД, вы можете использовать виртуальный столбец при определении модель кошки:
sequelize.define('Cat', {
// [other columns here...]
name: Sequelize.VIRTUAL
});
кроме того, если вы не хотите добавлять свойства в определение модели:
cat = cat.toJSON(); // actually returns a plain object, not a JSON string
cat.name = 'Macavity';
res.json(cat);