Я хочу сделать запрос на мою базу данных для документов и, если поле не установлено, вернет пользовательское значение вместо него.node.js/mongoDB: Возвращает пользовательское значение, если поле равно null
Представьте, что у меня есть коллекция songs
, и некоторые из них имеют поле pathToCover
, а некоторые нет. Для этого я хочу вернуть URL-адрес образ-заполнителя, который я храню в переменной конфигурации.
Я бегу 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);
});
}
Каков наилучший подход для этого?
Большое спасибо!
Если вы используете mongoose (вы помещаете его как тег), вы можете определить значение по умолчанию при построении схемы: 'pathToCover: {type: String, 'default': 'path/to/something'}' , – Protostome
, но не будет ли писать строку по умолчанию в базу данных? вот чего я пытаюсь избежать. – ngmir