我正在运行一个特殊的查询,我想在之后转换结果.
User.find({}, function(err, users) {
// I want to remove/add some properties from/to each user here
});
Run Code Online (Sandbox Code Playgroud)
有没有办法转换文件数组?这也是一个特例,所以我不想对Schema应用转换,我认为它会像我想要的那样转换每个文档,但也会影响对User模型的所有其他查询.
基本上我希望能够对返回的docs数组执行一次转换.
User.find({}, function(err, users) {
// I want to remove/add some properties to each user here
users.toJSON({transform: function(doc,ret,options) { /* do tranform*/ });
// That will not work as I get an error that toJSON is not defined for that
// array that was returned.
});
Run Code Online (Sandbox Code Playgroud)
我可以通过在查询之前添加转换然后在查询完成时删除该转换来伪造它,但这是一个非常糟糕的黑客恕我直言.
想法?我在文档中遗漏了什么吗?
您可以使用lean查询,以便从查询返回一个普通JS对象数组,然后用于map转换数组:
User.find({}).lean().exec(err, users) {
users = users.map(function(user) {
// transform user into newuser as needed.
...
return newuser;
});
});
Run Code Online (Sandbox Code Playgroud)