, безусловно, есть способ сделать это в гораздо меньшем количестве строк кода., запрашивающий две таблицы в sequelize
базы данных не самые сильные, и я новичок в секвестировании и узле. Идентификатор пользователя входит как параметр, и я должен проверить, есть ли пользователь в таблице пользователя. Если ни один пользователь не отправляет обратно никому другому, не проверяйте таблицу pics, чтобы увидеть, есть ли у пользователя рис. userid является символом forign в таблице pics. если у пользователя нет pic, я даю им по умолчанию другой мудрый, я установил их pic как сохраненный в базе данных. У меня есть работа, но я знаю, что это может быть написано намного лучше с меньшим количеством строк кода, использующих findAll, но я не могу его получить. Любая помощь оценивается. Вот код, который работает ..
users.findById(userId)
.then(function (user) {
if (!user) {
res.render('error', {
message: 'No user found with id of ' + userId,
error: {
status: 404
}
});
} else {
pics.findOne({
where: {
user_id: userId
},
attributes: ['profile_pic_filename']
}).then(function (pic) {
if (!pic) {
//if no pic give a default
profilepic = process.env.DEFAULT_PROFILE_PIC;
} else {
profilepic = CDNPath + pic.profile_pic_filename;
}
res.render('user', {
profilePic: profilepic,
firstname: user['first_name'],
username: user['username'],
surname: user['surname'],
email: user['email']}
);
});
}
});
Уменьшение пробелов - это не оптимизация в каком-либо смысле и требует затрат на удобочитаемость и обслуживание (примечание: я не являюсь нисходящим). – Wtower
@Wtower: Не стоит беспокоиться. Я ответил слишком быстро. Я исправил код (перед тем, как вы прокомментировали), чтобы использовать catch, что хотел OP (т. Е. Одна операция с базой данных). Тем не менее, начальные изменения, которые я сделал, были исключительно для улучшения читаемости. Я использую ранние возвращения и функцию жира стрелки все время, чтобы уменьшить напряжение глаз и thats на основе хороших рекомендаций стиля. – chriskelly
Это, безусловно, выглядит лучше Крис – Wtower