【发布时间】:2014-11-03 06:36:13
【问题描述】:
我要做的是查询我的数据库中的文档,如果未设置字段,则返回自定义值而不是它。
想象一下我有一个songs 的集合,其中一些设置了pathToCover 字段,而有些则没有。对于这些,我想将 URL 返回到我存储在配置变量中的占位符图像。
我正在使用 express 和 mongoose 运行 node.js 和 mongoDB。
我不确定最好的方法是什么。一个明显的解决方案是查询文档,然后在回调中迭代它们以检查该字段是否已设置。但这感觉很多余。
目前,我的代码如下所示:
exports.getByAlbum = function listByAlbum(query, callback) {
Song.aggregate({
$group: {
_id: '$album',
artists: { $addToSet: '$artist' },
songs: { $push: '$title' },
covers: { $addToSet: '$pathToCover'},
genres: { $addToSet: '$genre'},
pathToCover: { $first: '$pathToCover'}
}
},
function (err, result) {
if (err) return handleError(err);
result.forEach(function(album) {
if ( album.pathToCover == null) {
album.pathToCover = config.library.placeholders.get('album');
}
})
callback(result);
});
}
最好的方法是什么?
提前非常感谢!
【问题讨论】:
-
如果你使用猫鼬(你把它作为标签),你可以在构造模式时定义一个默认值:
pathToCover: { type:String, 'default': 'path/to/somewhere' }。 -
但这不会将默认字符串写入数据库吗?这就是我要避免的。
标签: node.js mongodb mongoose mongodb-query aggregation-framework