如何解决如何从脚本中检索变量以放入另一个脚本节点中
您好,我的项目使用Microsoft Graph API时遇到了一些问题。我需要实现一个REST API,该API从Azure AD检索用户的共享日历。我使用NodeJS表示这一点。
这是把手:
我实现了一个脚本(script.js),该脚本可检索用户的用户名(该用户名对应于他们的电子邮件地址):
现在,我获得了要查询其日历的人的电子邮件地址,因此我必须在另一个脚本(graph.js)的函数中传递此变量:
我希望代替getSharedCalend中的GiveUser()函数将已检查人员的电子邮件地址放入.hbs中。 预先感谢您的帮助。
解决方法
好吧,我花了几分钟反复阅读这篇文章,也许我明白了。 您有两个脚本。 script.js (是客户端脚本)和 graph.js (是服务器端脚本)。>
这些脚本无法直接通信。 script.js 在用户浏览器中运行,而 graph.js 在您的服务器中运行。您可以做的就是发出HTTP请求。通过创建html <form>
或使用fetch
的JavaScript。然后,您可以将用户重定向到日历。
graph.js:var graph = require('@microsoft/microsoft-graph-client');
require('isomorphic-fetch');
module.exports = {
getUserDetails: async function(accessToken) {
const client = getAuthenticatedClient(accessToken);
const user = await client.api('/me').get();
return user;
},getEvents: async function(accessToken) {
const client = getAuthenticatedClient(accessToken);
const events = await client
.api('/me/calendar/events')
.select('subject,organizer,start,end')
.orderby('createdDateTime DESC')
.get();
return events;
},getUserS: async function(accessToken) {
const client = getAuthenticatedClient(accessToken);
const usersprop = await client.api('/users').select('userPrincipalName').get();
return usersprop;
},getSharedCalend: async function(accessToken) {
const client = getAuthenticatedClient(accessToken);
console.log(getusershrd());
const shrdcalend = await client
.api('/users/'+***???***+'/calendar/events')
.get();
return shrdcalend;
}
};
function getAuthenticatedClient(accessToken) {
// Initialize Graph client
const client = graph.Client.init({
// Use the provided access token to authenticate
// requests
authProvider: (done) => {
done(null,accessToken);
}
});
return client;
}`
,
calendar.hbs:
<table class="table">
<thead>
<tr>
<th scope="col">Organizer</th>
<th scope="col">Subject</th>
<th scope="col">Start</th>
<th scope="col">End</th>
</tr>
</thead>
<tbody>
{{#each shrdcalend}}
<tr>
<td>{{this.organizer.emailAddress.name}}</td>
<td>{{this.subject}}</td>
<td>{{eventDateTime this.start.dateTime}}</td>
<td>{{eventDateTime this.end.dateTime}}</td>
</tr>
{{/each}}
</tbody>
</table>
<h1>Choice Shared Calendar</h1>
<table class="table">
<thead>
<tr>
<th scope="col">nom</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<form id="inscription">
{{#each usersprop}}
{{this.userPrincipalName}} : <input type="radio" name="username" id="username" value={{this.userPrincipalName}}><br>
{{/each}}
<td> <button type ="submit" value="inscription" >Voir Calendrier</button> </td>
</form>
<p style ="color: red;"id="erreur"></p>
</td>
</tr>
</tbody>
</table>`
//script on calendar.hbs
`<script>
document.getElementById("inscription").addEventListener("submit",function(e){
var erreur;
var entrer = document.getElementById("inscription").getElementsByTagName("input");
console.log(entrer);
for (var i=0 ; i<entrer.length; i++ ){
var chek = entrer[i].checked;
var username = entrer[i].value;
if(chek == true){
console.log(chek);
console.log(e);
console.log(username);
alert(username);
alert('formulaire envoyé !');
return username;
}else{
erreur = "0 case selec";
}
}
if(erreur){
e.preventDefault();
document.getElementById("erreur").innerHTML = erreur;
return false;
}
}
);
</script>`
,
我的文件路由器calendar.js:
var express = require('express');
var router = express.Router();
var tokens = require('../tokens.js');
var graph = require('../graph.js');
/* GET /calendar */
// <GetRouteSnippet>
router.get('/',async function(req,res) {
if (!req.isAuthenticated()) {
// Redirect unauthenticated requests to home page
res.redirect('/')
} else {
let params = {
active: { calendar: true }
};
// Get the access token
var accessToken;
try {
accessToken = await tokens.getAccessToken(req);
} catch (err) {
req.flash('error_msg',{
message: 'Could not get access token. Try signing out and signing in again.',debug: JSON.stringify(err)
});
}
if (accessToken && accessToken.length > 0) {
try {
// Get the events
var events = await graph.getEvents(accessToken);
params.events = events.value;
} catch (err) {
req.flash('error_msg',{
message: 'Could not fetch events',debug: JSON.stringify(err)
});
}
try {
// Get the calendars users
var shrdcalend = await graph.getSharedCalend(accessToken);
params.shrdcalend = shrdcalend.value;
} catch (err) {
req.flash('error_msg',{
message: 'Could not fetch shared calend',debug: JSON.stringify(err)
});
}
try {
// Get the events
var usersprop = await graph.getUserS(accessToken);
params.usersprop = usersprop.value;
} catch (err) {
req.flash('error_msg',debug: JSON.stringify(err)
});
}
} else {
req.flash('error_msg','Could not get an access token');
}
res.render('calendar',params);
}
}
);
module.exports = router;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。