node.js - 在发送之前过滤响应

标签 node.js mongodb filtering mongoose

我正在使用 Mongoose 在 Node.js 和 MongoDB 中编写服务器。

我有一个如下所示的用户模型:

var User = new Schema({
  username : {
    'type'      : String,
    'trim'      : true,
    'required'  : true,
    'validate': [usernameValidator, 'whitespace_not_allowed']
  },
  avatar : {
    'type'      : String,
    'lowercase' : true,
    'required'  : true
  },
  facebook_id : {
    'type'      : Number,
    'required'  : true,
    'index'     : { unique: true }
  },
  email : {
    'type'      : String,
    'lowercase' : true,
    'required'  : true
  },
  token : {
    'type'      : String,
    'index'     : { unique: true },
    'required'  : true
  }
});

当客户请求他所有的 facebook 好友时,我不想向他发送用户 token ,几乎每个请求都是如此。但是对于一些请求,比如登录,我想发送 token 。

问题是在查询数据库和发送 token 时忘记过滤结果,其他信息可能是非常致命的。

我现在正在考虑的解决方案是覆盖一个方法(还不知道是哪个),我在其中指定默认情况下应选择哪些字段。然后在我需要更多的少数情况下,我必须在查询中指定它。这样可以保证不会因为内存条错误而导致数据发送错误。

你是如何解决这个问题的?

最佳答案

默认情况下,您可以通过 select 在结果中排​​除 token 字段架构中字段定义的属性:

token : {
  'type'      : String,
  'index'     : { unique: true },
  'required'  : true,
  'select'    : false
}

关于node.js - 在发送之前过滤响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11924340/

相关文章:

javascript - 在express nodejs中将图像文件转换为base64

javascript - 无法将数据从js传递到node.js中的jade

javascript - 使用 passportjs 完成本地用户身份验证后,将 Twitter 帐户与 Passportjs 关联起来

javascript - 用随机时间更新集合中的每条记录?

r - 数据表总和和子集

tuples - Mathematica 收集列表中的元素

iOS - 过滤后的声音停止后可听到爆音

node.js - winston 记录器文件名错误未定义

javascript - 确定用户嵌入文档数组中是否存在值

c# - mongodb中的授权