使用 Express 过滤 HTTP 响应

Filter HTTP Response with Express

我正在使用 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,并 return 一个包含来自适当轮询的数据的对象。但是,此对象还包含一个 'voters' 数组,它是已为每个可能的响应投票的 SessionID 的列表。我不希望这是回复的一部分。

我基本上想要 return 一切,除了 'voters' 数组。我怎样才能 'filter' 我的 http 响应包含除选民以外的所有内容?

如果你有一些包含 voters 数组的数据结构,而你只想删除该数组,你可以使用 delete obj.voters 删除 属性来自 returned 对象。

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

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

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

delete obj.voters;

仅供参考,如果您将此数据库结果转换为 JSON 并从 Express 路由 returning ,那么另一种方法是为实际的 http 响应构造一个新对象,并且仅复制您想要包含在其中的数据库查询结果对象的属性。这也可能涉及一个循环,但这会使您的 http 响应成为一个更故意构建的对象,而不是恰好在您的数据库中的对象。它使两者脱钩。如果您向数据库添加一个新字段,它不会出现在您路线的 JSON 中,除非您有意识地更改您的路线以包含它。因此,默认情况下,路由仅 return 包含您明确设置的字段 return 而不是默认 return 数据库查询结果中的所有内容。