使用Express过滤HTTP响应

时间:2015-03-21 23:27:41

标签: javascript json angularjs 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列表。我不希望这成为回应的一部分。

我基本上想要归还所有东西,除了选民和#39;阵列。我怎样才能过滤'我的http回复所以它包含除选民以外的所有内容?

1 个答案:

答案 0 :(得分:0)

如果你有一些包含voters数组的数据结构,并且你想删除该数组,你可以使用delete obj.voters从返回的对象中删除该属性

所以,如果你有这样的对象:

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

您可以使用以下命令从中删除voters属性

delete obj.voters;

仅供参考,如果您将此数据库结果转换为JSON并从Express路由返回,那么另一种方法是为实际的http响应构造一个新对象,并仅复制数据库查询结果中的属性你想要进入它的对象。这可能还涉及一个循环,但这会使您的http响应成为一个更加刻意构建的对象,而不是数据库中恰好发生的情况。它解耦了两者。如果您向数据库添加新字段,除非您有意识地更改路由以包含它,否则它不会显示在您的路径中的JSON中。因此,默认情况下,路由只返回您明确返回的字段,而不是默认返回数据库查询结果中的所有内容。