Javascript:删除json数组的成员

标签 javascript json

我的服务器应用程序(Node.js)向前端返回用户列表(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";

而不是删除用户[i].password等...它不会隐藏_id__v成员,而password 字段已正确隐藏到前端(admin,因为它是 bool 值,所以变为 true)。

最佳答案

尝试添加Projection find 函数的参数:

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

然后将回调作为第三个参数传递

关于Javascript:删除json数组的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193227/

相关文章:

javascript - 如何使用 CSS 或 Javascript 尽可能简单轻便地在鼠标悬停时切换图像?

Javascript弹出滚动跳转

c# - 如何将枚举值序列化为字符串?

java - Android从字符串数组中获取volley数据

c# - 如何使用 Serilog 以有效的 json 格式记录复杂对象?

JavaScript 事件,不更新 knockout 可观察/模型值

javascript - 如何暂停 setInterval() 函数?

javascript - 关于 javascript 范围的澄清

json - Spring MVC 中 Json 响应的后处理

c++ - MongoDB C++ 驱动程序 3.0 以字符串形式获取文档并避免使用 json