Javascript 为什么我不能向JS对象添加字段?
我正在使用Sequelize ORM for MySQL对节点进行编程。我需要向查询返回的Sequelize对象添加一个新字段,但它似乎不起作用Javascript 为什么我不能向JS对象添加字段?,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我正在使用Sequelize ORM for MySQL对节点进行编程。我需要向查询返回的Sequelize对象添加一个新字段,但它似乎不起作用 Category.find({ where: { id: req.params.id }, include: [Item] }).success(function(category) { var items = category.items; var ci = category.items.map(function(item) { r
Category.find({
where: { id: req.params.id },
include: [Item]
}).success(function(category) {
var items = category.items;
var ci = category.items.map(function(item) { return item.id; });
delete category.items; // this works
category.item_ids = ci; // this doesn't
// category['item_ids'] = ci; // this doesn't work as well
res.send({
category: category,
items: items
});
});
Object.isExtensible
在category
对象上返回true,但我不知道如何实际扩展它您可以添加一个计算属性:
试试这个:
.success(function(category) {
category = category.toJSON(); // convert to a simple JS object
...
category.item_ids = ci;
...
res.render(...);
});
我需要将对象作为JSON响应传递,不要认为访问器在这种情况下会有所帮助。谢谢,修复了我的问题。虽然
typeof(category)
返回的是object
,我知道它是一个JSON,但我仍然无法向它添加字段。@airvezxtoJSON()
实际上返回的是一个对象,但是一个普通的JS对象,而不是Sequelize类实例。如果你不能解决你的问题,你应该考虑创造一个新的问题。你的回答解决了我的问题。不过我用的是Mongoose对象。@Airwavezx哦,是的,Mongoose对象也有一个类似的问题,就是你不能向它们添加字段(除非你能.toJSON
或.toObject
)。