2017-02-12 6 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); 
     }); 
    }, 

フロントエンドはすべてのフィールドを受信します(フィルタは適用されません)。 私は、例えば、データを隠すために別の方法を使用する場合:passwordフィールドが正しくフロントに隠されている間、代わりにdelete users[i].password等...それは_id__vメンバーを隠していないの

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

終了(admin、ブール値なのでtrueになります)。

答えて

1

find機能にProjection引数を追加しよう:

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

、ちょうど3番目の引数としてコールバックを渡す

+0

これは私が探していたまさにです – pittuzzo

関連する問題