2017-02-12 43 views
0

我的服务器应用程序(Node.js)返回前端用户列表(json数组)。但我不想还返回一些文件,如密码。所以这是我的用户模式代码:Javascript:删除json数组的成员

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var config = require('../../config.js'); 

module.exports = mongoose.model(config.DATA_TYPE.USER, new Schema({ 
    username: String, 
    password: String, 
    admin: { type: Boolean, default: false}, 
    rate: { type: Number, default: 0}, 
    customers: { type: Number, default: 0}, 
    registration: { type: Date, default: Date.now} 
})); 

我正在尝试经理不转发也有一些领域,但没有积极的结果。这是我尝试删除的磁盘阵列的用户对象的几个成员:

var _ = require('lodash'); 
var User = require('../models/user.js'); 
var config = require('../../config.js'); 

var Manager = { 
    getUsers: function(callback){ 
     User.find({ admin : "false"}, function(err,users){ 
      for (i in users){ 
       delete users[i].admin; 
       delete users[i].password; 

       delete users[i]._id; 
       delete users[i].__v; 
      } 
      callback(err,users); 
     }); 
    }, 

前端接收的所有字段(不应用过滤器)。 如果我用一种不同的方式来隐藏数据,例如:

users[i].password = "xxx"; 
    users[i]._id = "xxx"; 
    users[i].__v = "xxx"; 
    users[i].admin = "xxx"; 

代替delete users[i].password等..它没有隐藏_id__v成员,而password场被正确地隐藏到前置式结束(admin,因为它是一个布尔值,所以变成true)。

回答

1

尝试Projection参数添加到find功能:

var Manager = { 
    getUsers: function(callback){ 
    User.find({ admin : "false"}, {_id: 0, __v: 0, admin: 0, password: 0}, callback); 
    }, 

,只是通过你的回调作为第三个参数

+0

这正是我一直在寻找 – pittuzzo