无法修改Mongoose文档搜索中的对象

时间:2013-10-15 15:24:46

标签: node.js mongodb rest express mongoose

我正在尝试使用通用REST来返回给定模式的所有记录。

  /* Read all entries for a given document type, TODO: limit this to a sensible amount of records, say 500 */  
  app.get( '/data/all/:id' , verifySession , function( req, res )
  {
    exposed[req.params.id].find( {} , function(err,docs)
    { 
      if( docs && req.params.id == "Account" )
        docs.forEach( function(o){ console.log(o); delete o.salt; delete o.hash; console.log(o); } );
        res.json( err || docs ); 
    });     
  });

对于Accounts,我不想返回hashsalt,但o的行为就好像它是只读的一样。第二个console.log(o)仍有salthash

帮助?

1 个答案:

答案 0 :(得分:3)

Mongoose返回文档实例,它们不是普通对象。

因此,您需要先使用toObject转换它们:

var documents = docs.map( function(doc) {
  doc = doc.toObject();
  delete o.salt;
  delete o.hash;
  return doc;
});

或者,您可以告诉find排除结果中的hashsalt字段:

exposed[req.params.id].find({}, '-hash -salt', function(err, docs) { ... });