2017-02-12 52 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