Jade页面被多次渲染

3
我是一个有用的助手,可以翻译文本。
我有一个玉页,从 URL 中取一个参数(用户名)并呈现有关此用户的信息。 但是,页面被呈现了多次。 当我打印 URL 时,第一次似乎是完整的(带有用户名),其他时间则没有。 我正在使用 node js 和 angular 来提供数据。 这是我的代码:
NODE JS:(myuser 是我测试现有用户的静态值)
router.get('/personel', function (req, res) {
    var user_name = req.query['username']; 
    var fullname= 0;
    var fields = ['fullname'];

    if(req.url == '/personel?username=myuser'){
        models.users.findAll({
            attributes: fields,
            limit: 1,
            where: {username: user_name}
        }).then(function (result) {

            res.render('personel',
            {       
                title : 'Personel', 
                username: user_name,
                fullname: result[0].fullname,
            })
        }); 
        console.log(req.url);
    }
});

控制器:
Todos.get().success(function(data) {
    if ($scope.todosi != undefined) {
        $scope.todos = data;
        $scope.loading = false;
    }
});

玉代码:
form
        input(type='text', ng-model='todosi.username', value=username)
        table.table.table-hover
          tr
            td full name
            td
              input(type='text', ng-model='todosi.fullname', placeholder=fullname)
        button.btn.btn-primary.btn-lg(type='submit', ng-click='createTodo()') Update

如果我在浏览器中加载页面http://localhost:31/apiv2/customer/personel?username=myuser,则用户名为空,但全名具有实际全名的值。
在日志中,使用req.url最初获得/personel?username=myuser,然后仅获得/personel 然而,在Mozilla开发者工具->网络中,引用程序始终为http://localhost:31/apiv2/customer/personel?username=myuser 我试图强制页面仅在URL包含用户名作为参数时才呈现,但这并没有改变任何内容。
PS:尽管在此可能看起来不是这样,但jade是正确的,并且不会产生任何错误。
1个回答

1

首先,如果您有查询参数,则更好的方法是:

router.get('/personel/:username', function (req, res) {});

我认为您的页面加载了多次,因为您有不同(但相同)的路由。

如果您使用此解决方案:

router.get('/personel/:username', function (req, res) {});

请检查您路由的顺序。 这个顺序无法正常工作:

 /personel/:username
 /personel/sayhello

因为 sayhello 被捕捉成了 :username

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接