Javascript 将数据传递到把手-node.js

Javascript 将数据传递到把手-node.js,javascript,json,node.js,Javascript,Json,Node.js,我是node.js新手,所以基本上我在路由器(index.js)中发出一个get请求,然后在得到结果后(我可以看到我通过将其转储到console.log中获得了正确的结果),我将其解析为一个json对象,并将其传递给一个呈现函数,以便在那里使用它,但是,我遇到了错误。我将在下面发布代码段和JSON片段。这是使用把手的正确方法吗 路由器(index.js) JSON对象 { "@odata.context": "https://graph.microsoft.com/v1.0/$metad

我是node.js新手,所以基本上我在路由器(index.js)中发出一个get请求,然后在得到结果后(我可以看到我通过将其转储到console.log中获得了正确的结果),我将其解析为一个json对象,并将其传递给一个呈现函数,以便在那里使用它,但是,我遇到了错误。我将在下面发布代码段和JSON片段。这是使用把手的正确方法吗

路由器(index.js)

JSON对象

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
    "@odata.nextLink": "https://graph.microsoft.com/v1.0/users?$skiptoken=X%27445370740200010000001B3A4150432E4167656E744074686577696E6567726F7572D303037332D343865352D396432332D633438383336613833636361B900000000000000000000%27",
    "value": [{
            "businessPhones": [],
            "displayName": "ABC DEF",
            "givenName": "ABC",
            "jobTitle": null,
            "mail": "Abc.Def@somemail.com",
            "mobilePhone": null,
            "officeLocation": null,
            "preferredLanguage": null,
            "surname": "DEF",
            "userPrincipalName": "abc.def@somemail.com",
            "id": "abcd1"
        }, {
            "businessPhones": [],
            "displayName": "ABC XYZ",
            "givenName": "ABC",
            "jobTitle": "Shipping Clerk",
            "mail": "Abc.Xyz@somemail.com",
            "mobilePhone": null,
            "officeLocation": "Stockton",
            "preferredLanguage": null,
            "surname": "XYZ",
            "userPrincipalName": "abc.xyz@somemail.com",
            "id": "abcd2"
        }
        .....
    }] }
显示所有用户。hbs

router.get('/getusers', function(req, res) {
    wrapRequestAsCallback(req.cookies.TOKEN_CACHE_KEY, {

        onSuccess: function(token) {
            var all_users = {};
            // get all the users
            requestUtil.getJson(
                'graph.microsoft.com',
                '/v1.0/users',
                token.accessToken,
                function(result) {
                    if (result !== null) {
                        console.log(result);
                        all_users = JSON.parse(result);
                        req.session.all_users = all_users;
                        if (all_users !== null) {
                            res.render('display_all_users', all_users);
                        }
                    }
                }
            );
        },

        onFailure: function(err) {
            res.status(err.code);
            console.log(err.message);
            res.send();
        }
    });
});
<h2 class="ms-font-xxl ms-fontWeight-semibold"> EMPLOYEE DETAILS: </h2>
<div class="ms-TextField">
    <p> {{all_users.value[0].displayName}} </p>
</div>
员工详细信息:
{{all_users.value[0].displayName}

我需要查看所有用户详细信息,但出于测试目的,我试图访问返回的第一个用户的显示名称,但我收到以下错误:

Error: C:\test\views\display_all_users.hbs: Parse error on line 15:
...    <p> {{all_users.value[0].displayName
-----------------------^

    Expecting 'ID', got 'INVALID'
    at Object.parseError(C: \test\ node_modules\ hbs\ node_modules\ handlebars\ dist\ cjs\ handlebars\ compiler\ parser.js: 150: 11)
    at Object.parse(C: \test\ node_modules\ hbs\ node_modules\ handlebars\ dist\ cjs\ handlebars\ compiler\ parser.js: 202: 22)
    at HandlebarsEnvironment.parse(C: \test\ node_modules\ hbs\ node_modules\ handlebars\ dist\ cjs\ handlebars\ compiler\ base.js: 25: 30)
    at compileInput(C: \test\ node_modules\ hbs\ node_modules\ handlebars\ dist\ cjs\ handlebars\ compiler\ compiler.js: 451: 19)
    at ret(C: \test\ node_modules\ hbs\ node_modules\ handlebars\ dist\ cjs\ handlebars\ compiler\ compiler.js: 460: 18)
    at C: \test\ node_modules\ hbs\ lib\ hbs.js: 63: 19
    at FSReqWrap.readFileAfterClose[as oncomplete](fs.js: 380: 3)
Error:C:\test\views\display\u all\u users.hbs:Parse Error on line 15:
...     {{所有_用户。值[0]。显示名称
-----------------------^
应为“ID”,但应为“无效”
at Object.parseError(C:\test\node\u modules\hbs\node\u modules\handlebar\dist\cjs\handlebar\compiler\parser.js:150:11)
在Object.parse(C:\test\node\u modules\hbs\node\u modules\handlebar\dist\cjs\handlebar\compiler\parser.js:202:22)
在HandlebarsEnvironment.parse(C:\test\node\u modules\hbs\node\u modules\handlebar\dist\cjs\handlebar\compiler\base.js:25:30)
在编译器输入端(C:\test\node\u modules\hbs\node\u modules\handlebar\dist\cjs\handlebar\compiler\compiler.js:451:19)
在ret(C:\test\node\u modules\hbs\node\u modules\handlebar\dist\cjs\handlebar\compiler\compiler.js:460:18)
在C:\test\node\u modules\hbs\lib\hbs.js:63:19
在FSReqWrap.readFileAfterClose[完成时](fs.js:380:3)

首先,您需要将node.js结果呈现到Handlebar模板中,如下所示:

res.render('display_all_users', {all_users: all_users});
{{#each all_users}}
        <tr>
              <td headers="name">{{all_users.value[0].displayName}}</td>

         </tr>

 {{/each}}
一旦“所有用户”可用,您可以获得如下值:

res.render('display_all_users', {all_users: all_users});
{{#each all_users}}
        <tr>
              <td headers="name">{{all_users.value[0].displayName}}</td>

         </tr>

 {{/each}}
{{{每个所有用户}
{{all_users.value[0].displayName}
{{/每个}}

您是否尝试过此
res.render('display_all_用户',{all_用户:all_用户});
?是的,我尝试过,但仍然会出现相同的错误。我甚至尝试过res.render('display_all_用户',{data:all_用户});并尝试在手柄中作为数据访问它。值[0].displayName,但仍然是相同的结果不确定这是否有帮助,但当我的每个助手在“#each”和“/each”@hectorbossa之前有一个空格时,我得到了一个类似的错误。在我的代码中,#each和/each之间没有空格,但我仍然无法找出哪里出错了。我只是尝试了,但我仍然得到了相同的错误。还有其他错误吗建议?
{{value[0].displayName}}
一个不同但几乎相同的错误:错误:C:\test\views\display\u all_users.hbs:第19行的分析错误:…td headers=“name”>{value[0].displayName-----------------^应为'ID',STRING',NUMBER',BOOLEAN',DATA',在Object处得到'INVALID'。parseError(C:\test\node\u modules\hbs\node\u modules\handlebar\dist\cjs\handlebar\compiler\parser.js:150:11)在Object.parse(C:\test\node\u modules\hbs\node\u modules\handlebar\dist\cjs\handlebar\compiler\parser.js:202:22)写入{{all\u users}和{all\u users}值时打印的内容