简化此代码片段的建议?
Suggestions to concise this code snippet?
当 request.params.name 字段通过请求进入时,我希望对象的 .name 值与 pic: piece 一起呈现,这样我们就可以用正确的图片呈现网页。
我试过切片得到 persons.bros.whateverthenameis,但是 json 对象在传递给 express 的渲染方法时无法正确读取。因此,与其传递 willis_pic、Llama_pic、Carter_pic(它们只是 persons.burns.whateverthenameis)等,不如传递 persons.burns.(req.params.name ) 但它不会正常工作,因为 req.params.name 是一个字符串,并且不被识别为我希望它成为的点符号。明确地说,我想以更简洁的方式将 persons.burns.Willis 或 persons.burns.Llama 等传递到渲染方法的 pic:param 中,因为所有这些 if 语句都是废话。我也使用了 json parse 和 stringify,当我尝试将它们记录到控制台时,两者都不起作用并输出未定义。
router.get("/profile/:name", mid.requiresLogin, function(req,res,next) {
var persons = {
bros: {
Willis: src = 'https://www.coloradocollege.edu/academics/dept/filmandnewmedia/images/Students/2018-19/Major%20Photo%20Border_WillisZetter_2019.jpg',
Llama: src = 'https://media.licdn.com/dms/image/C5603AQFQwEfmSpR1bQ/profile-displayphoto-shrink_200_200/0?e=1568851200&v=beta&t=lX01L9YxKGJmgkGT0FwQdN1o2-oNyxA18c42q_IPcfU',
Carter: src = 'https://cctigers.com/images/2019/2/8/Richardson2019.jpg',
Quang: src='https://media.licdn.com/dms/image/C5103AQE3RFIlv9FMEw/profile-displayphoto-shrink_800_800/0?e=1568851200&v=beta&t=yL9fgzubo7_XZpgmbFVRwDYUYULiGVPAf091qzq5Rm8',
Maslow: src='https://media.licdn.com/dms/image/C4E03AQHHMv2-Fo0ppg/profile-displayphoto-shrink_800_800/0?e=1568851200&v=beta&t=5KYt7vrP-iXkgy0s2eDtLvDgnge0IF2DoSELDOnm4Gg',
Beem: src='https://media.licdn.com/dms/image/C5603AQG1_8PHv_WGoQ/profile-displayphoto-shrink_800_800/0?e=1568851200&v=beta&t=NnVjW5UjQeXG8e0QwhsKe4XvFcU8JUbgHd7d5TRSww8'
}
};
//if the obj.name is === (Any of the names that are pic variables) render that persons prof
User.findOne({name: req.params.name}, function (err, obj) {
if (req.params.name === "Willis"){
var pic = (JSON.stringify(persons.bros.Willis));
var willis_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: willis_pic}) <--- want to get rid of this so we can insert the req.params.name variable but it won't work properly when trying to access the json obj.
}
else if(req.params.name === "Llama"){
var pic = (JSON.stringify(persons.bros.Llama));
var llama_pic = JSON.parse(pic);d
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: llama_pic})
}
else if (req.params.name === "Carter"){
var pic = (JSON.stringify(persons.bros.Carter));
var carter_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: carter_pic})
}
else if (req.params.name === "Quang"){
var pic = (JSON.stringify(persons.bros.Quang));
var quang_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: quang_pic})
}
else if (req.params.name === "Maslow"){
var pic = (JSON.stringify(persons.bros.Maslow));
var maslow_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: maslow_pic})
}
else if (req.params.name === "Beem"){
var pic = (JSON.stringify(persons.bros.Beem));
var beem_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: beem_pic})
}
试试这个
User.findOne({name: req.params.name}, function (err, obj) {
if ["Willis","Llama","Carter","Quang","Maslow","Beem"].includes(req.params.name){
var pic = (JSON.stringify(persons.bros[req.params.name]));
var tmp_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: tmp_pic})
}
}
只需查找 bros
对象上的 req.params.name
属性,如果 属性 存在,则渲染它。记住也不要忽略错误 - err
通常是第一个提示您首先检查它的参数:
const name = req.params.name;
User.findOne({ name }, function (err, obj) {
if (err) {
// make sure to handle errors, don't just ignore them
// res.render... "there was an error"
return;
}
const pic = persons.bros[name];
if (!pic) {
// handle case where the name is not in the object, if this is a possibility
return;
}
return res.render('profile', {title: 'Sign Up', name, from: obj.burns, pic });
});
当 request.params.name 字段通过请求进入时,我希望对象的 .name 值与 pic: piece 一起呈现,这样我们就可以用正确的图片呈现网页。
我试过切片得到 persons.bros.whateverthenameis,但是 json 对象在传递给 express 的渲染方法时无法正确读取。因此,与其传递 willis_pic、Llama_pic、Carter_pic(它们只是 persons.burns.whateverthenameis)等,不如传递 persons.burns.(req.params.name ) 但它不会正常工作,因为 req.params.name 是一个字符串,并且不被识别为我希望它成为的点符号。明确地说,我想以更简洁的方式将 persons.burns.Willis 或 persons.burns.Llama 等传递到渲染方法的 pic:param 中,因为所有这些 if 语句都是废话。我也使用了 json parse 和 stringify,当我尝试将它们记录到控制台时,两者都不起作用并输出未定义。
router.get("/profile/:name", mid.requiresLogin, function(req,res,next) {
var persons = {
bros: {
Willis: src = 'https://www.coloradocollege.edu/academics/dept/filmandnewmedia/images/Students/2018-19/Major%20Photo%20Border_WillisZetter_2019.jpg',
Llama: src = 'https://media.licdn.com/dms/image/C5603AQFQwEfmSpR1bQ/profile-displayphoto-shrink_200_200/0?e=1568851200&v=beta&t=lX01L9YxKGJmgkGT0FwQdN1o2-oNyxA18c42q_IPcfU',
Carter: src = 'https://cctigers.com/images/2019/2/8/Richardson2019.jpg',
Quang: src='https://media.licdn.com/dms/image/C5103AQE3RFIlv9FMEw/profile-displayphoto-shrink_800_800/0?e=1568851200&v=beta&t=yL9fgzubo7_XZpgmbFVRwDYUYULiGVPAf091qzq5Rm8',
Maslow: src='https://media.licdn.com/dms/image/C4E03AQHHMv2-Fo0ppg/profile-displayphoto-shrink_800_800/0?e=1568851200&v=beta&t=5KYt7vrP-iXkgy0s2eDtLvDgnge0IF2DoSELDOnm4Gg',
Beem: src='https://media.licdn.com/dms/image/C5603AQG1_8PHv_WGoQ/profile-displayphoto-shrink_800_800/0?e=1568851200&v=beta&t=NnVjW5UjQeXG8e0QwhsKe4XvFcU8JUbgHd7d5TRSww8'
}
};
//if the obj.name is === (Any of the names that are pic variables) render that persons prof
User.findOne({name: req.params.name}, function (err, obj) {
if (req.params.name === "Willis"){
var pic = (JSON.stringify(persons.bros.Willis));
var willis_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: willis_pic}) <--- want to get rid of this so we can insert the req.params.name variable but it won't work properly when trying to access the json obj.
}
else if(req.params.name === "Llama"){
var pic = (JSON.stringify(persons.bros.Llama));
var llama_pic = JSON.parse(pic);d
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: llama_pic})
}
else if (req.params.name === "Carter"){
var pic = (JSON.stringify(persons.bros.Carter));
var carter_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: carter_pic})
}
else if (req.params.name === "Quang"){
var pic = (JSON.stringify(persons.bros.Quang));
var quang_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: quang_pic})
}
else if (req.params.name === "Maslow"){
var pic = (JSON.stringify(persons.bros.Maslow));
var maslow_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: maslow_pic})
}
else if (req.params.name === "Beem"){
var pic = (JSON.stringify(persons.bros.Beem));
var beem_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: beem_pic})
}
试试这个
User.findOne({name: req.params.name}, function (err, obj) {
if ["Willis","Llama","Carter","Quang","Maslow","Beem"].includes(req.params.name){
var pic = (JSON.stringify(persons.bros[req.params.name]));
var tmp_pic = JSON.parse(pic);
return res.render('profile', {title: 'Sign Up', name: req.params.name, from: obj.burns, pic: tmp_pic})
}
}
只需查找 bros
对象上的 req.params.name
属性,如果 属性 存在,则渲染它。记住也不要忽略错误 - err
通常是第一个提示您首先检查它的参数:
const name = req.params.name;
User.findOne({ name }, function (err, obj) {
if (err) {
// make sure to handle errors, don't just ignore them
// res.render... "there was an error"
return;
}
const pic = persons.bros[name];
if (!pic) {
// handle case where the name is not in the object, if this is a possibility
return;
}
return res.render('profile', {title: 'Sign Up', name, from: obj.burns, pic });
});