简明扼要的代码段的建议?

时间:2019-07-24 00:11:20

标签: javascript node.js express web-development-server

当request.params.name字段通过请求进入时,我希望使用pic:piece呈现对象的.name值,以便我们可以使用适当的图片呈现网页。

我曾经尝试切片以获取person.bros.whatthenames,但是当将json对象传递给express'render方法时,无法正确读取json对象。因此,与其传递willis_pic,Llama_pic,Carter_pic(仅是person.burns.whateverthenames)等ID,不如传递person.burns。(req.params.name),但由于req.params.name不能正常工作是一个字符串,不能识别为我想要的点表示法。明确地说,我想以更简洁的方式将person.burns.Willis或person.burns.Llama等传递到render方法的pic:param中,因为所有这些if语句都是废话。香港专业教育学院也使用json解析和字符串化,当我尝试将它们登录到控制台时,都无法正常工作和输出未定义。

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})
        }

2 个答案:

答案 0 :(得分:0)

尝试一下

 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})
    }
}

答案 1 :(得分:0)

只需在req.params.name对象上查找bros属性,如果该属性存在,则将其呈现。记住也不要忽略错误-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 });
});