使用 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 数据库查询结果中的所有内容。
我正在使用 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 数据库查询结果中的所有内容。