2013-05-04 1 views
2

Je suis en train de programmer Node avec Sequelize ORM pour MySQL. J'ai besoin d'ajouter un nouveau champ à l'objet que Sequelize renvoie sur une requête, mais cela ne semble pas fonctionner.Pourquoi je ne peux pas ajouter de champ à un objet JS?

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 renvoie true sur l'objet category, mais je ne peux pas comprendre comment étendre réellement

Répondre

5

Essayez ceci:

Je dois passer l'objet au format JSON.
.success(function(category) { 
    category = category.toJSON(); // convert to a simple JS object 
    ... 
    category.item_ids = ci; 
    ... 
    res.render(...); 
}); 
+0

Super, juste ce dont j'ai besoin, merci! – mrvn

+0

Merci, corrigé mon problème. Bien que 'typeof (category)' renvoyait 'object' et je sais que c'est un JSON, je ne pouvais toujours pas lui ajouter de champ. – Airwavezx

+0

@Airwavezx 'toJSON()' retourne effectivement un objet, mais un simple JS et non une instance de classe Sequelize. Si vous ne pouvez pas résoudre votre problème, vous devriez envisager de créer une nouvelle question. – robertklep

Questions connexes