使用Express过滤HTTP响应

詹姆斯·迈尔斯

我正在用Express构建一个简单的民意测验应用程序。我的数据如下所示:

var responseSchema = new mongoose.Schema({
    responseText: String,
    voters: []

})
module.exports = mongoose.model('Responses', responseSchema);

var pollsSchema = new mongoose.Schema({
    question: String,
    responses: [responseSchema],
})

基本上,在我的路线中,我从路线参数获取ID,并返回一个包含来自相应轮询的数据的对象。但是,此对象还包含一个“投票者”数组,这是已为每个可能的响应投票的SessionID的列表。我不希望这成为回应的一部分。

除了“ voters”数组外,我基本上想返回所有内容。我如何“过滤”我的http响应,使其包含除选民之外的所有内容?

jfriend00

如果您有一些带有voters数组的数据结构,并且只想删除该数组,则可以使用delete obj.voters来从返回的对象中删除该属性。

因此,如果您有这样的对象:

var obj = {
    someField: someValue,
    someOtherField: someOtherValue,
    voters: [...]
}

您可以使用以下方法从该voters属性中删除该属性:

delete obj.voters;

仅供参考,如果您要将数据库结果转换为JSON并从Express路由返回,那么另一种方法是为实际的HTTP响应构造一个新对象,并仅复制要查询的数据库查询结果对象中的属性在里面。这可能还涉及一个循环,但是这会使您的http响应成为一个经过精心设计的对象,而不是数据库中的确切对象。它使两者脱钩。如果将新字段添加到数据库,则除非您有意识地更改路由以包含它,否则它不会显示在路线的​​JSON中。因此,默认情况下,路由仅返回您明确使之返回的字段,而不是默认返回数据库查询结果中的所有内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章