我用快递构建一个简单的民意调查应用程序。我的数据如下:
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回复所以它包含除选民以外的所有内容?
答案 0 :(得分:0)
如果你有一些包含voters
数组的数据结构,并且你想删除该数组,你可以使用delete obj.voters
从返回的对象中删除该属性
所以,如果你有这样的对象:
var obj = {
someField: someValue,
someOtherField: someOtherValue,
voters: [...]
}
您可以使用以下命令从中删除voters
属性
delete obj.voters;
仅供参考,如果您将此数据库结果转换为JSON并从Express路由返回,那么另一种方法是为实际的http响应构造一个新对象,并仅复制数据库查询结果中的属性你想要进入它的对象。这可能还涉及一个循环,但这会使您的http响应成为一个更加刻意构建的对象,而不是数据库中恰好发生的情况。它解耦了两者。如果您向数据库添加新字段,除非您有意识地更改路由以包含它,否则它不会显示在您的路径中的JSON中。因此,默认情况下,路由只返回您明确返回的字段,而不是默认返回数据库查询结果中的所有内容。