Javascript 为什么我不能向JS对象添加字段?

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

我正在使用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) { 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,但我仍然无法向它添加字段。@airvezx
toJSON()
实际上返回的是一个对象,但是一个普通的JS对象,而不是Sequelize类实例。如果你不能解决你的问题,你应该考虑创造一个新的问题。你的回答解决了我的问题。不过我用的是Mongoose对象。@Airwavezx哦,是的,Mongoose对象也有一个类似的问题,就是你不能向它们添加字段(除非你能
.toJSON
.toObject
)。