如何将用户名(存储在本地存储令牌中)传递到后端?(同步计划)



我正在使用同步调度程序到我的MEAN应用程序中。这是我后端对 CRUD 事件的代码:

index.js

MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("meanstacknew");
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.post("/GetData", (req, res) => {
dbo.collection('ScheduleData').find({'CreatedBy':'**here I want only the current logged in username**'}).toArray((err, cus) => {
res.send(cus);
console.log(req)
});
});

app.post("/BatchData", (req, res) => {
console.log(req.body);
var eventData = [];
if (req.body.action == "insert" || (req.body.action == "batch" && req.body.added.length > 0)) {
(req.body.action == "insert") ? eventData.push(req.body.value) : eventData = req.body.added;
for (var i = 0; i < eventData.length; i++) {
var sdate = new Date(eventData[i].StartTime);
var edate = new Date(eventData[i].EndTime);
eventData[i].StartTime = (new Date(+sdate - (sdate.getTimezoneOffset() * 60000)));
eventData[i].EndTime = (new Date(+edate - (edate.getTimezoneOffset() * 60000)));
dbo.collection('ScheduleData').insertOne(eventData[i]);
}
}
if (req.body.action == "update" || (req.body.action == "batch" && req.body.changed.length > 0)) {
(req.body.action == "update") ? eventData.push(req.body.value) : eventData = req.body.changed;
for (var i = 0; i < eventData.length; i++) {
delete eventData[i]._id;
var sdate = new Date(eventData[i].StartTime);
var edate = new Date(eventData[i].EndTime);
eventData[i].StartTime = (new Date(+sdate - (sdate.getTimezoneOffset() * 60000)));
eventData[i].EndTime = (new Date(+edate - (edate.getTimezoneOffset() * 60000)));
dbo.collection('ScheduleData').updateOne({ "Id": eventData[i].Id }, { $set: eventData[i] });
}
}
if (req.body.action == "remove" || (req.body.action == "batch" && req.body.deleted.length > 0)) {
(req.body.action == "remove") ? eventData.push({ Id: req.body.key }) : eventData = req.body.deleted;
for (var i = 0; i < eventData.length; i++) {
dbo.collection('ScheduleData').deleteOne({ "Id": eventData[i].Id });
}
}
res.send(req.body);
});
});

在角度方面,我有以下代码来检索用户用户名(存储在本地存储中(:

schedule.component.ts

ngOnInit() {
this.userName = JSON.parse(localStorage.getItem("user"));
this.email = profile.user.email;
console.log(this.userName.username)

}

通过下面的代码,我自动添加"createdBy"字段和创建的事件:

schedule.component.ts

onActionBegin(args: ActionEventArgs): void {
if (args.requestType === "eventCreate") {
args.data[0].CreatedBy = this.email;
}

}

因此,我想查询CreatedBy字段是否与令牌值匹配(如果有意义(。 我如何实现这一点?如何访问 Expressjs 中的客户端变量?

Dear Customer,
Syncfusion Greetings
To send an additional custom parameter to the server-side post, you need to make use of the addParams method of query. Now, assign this query object with additional parameters to the query property of Scheduler. We have prepared a below sample to pass tokens as an additional parameter to the scheduler and same can be available in below link. 
Sample: https://www.syncfusion.com/downloads/support/directtrac/general/ze/AdditionalParameterSample505803347 
Please refer below UG Link.
https://ej2.syncfusion.com/angular/documentation/schedule/data-binding/#passing-additional-parameters-to-the-server
App.component.ts file:
ngOnInit(): void {
this.selectedDate = new Date(2018, 1, 14);
this.email = "username@gmail.com"; // Here we used static email address for your reference. Kindly map your currently logined user email to achieve your scenario.
this.userName = "usename"; // Here we used static user name for your reference. Kindly map your currently logined username to achieve your scenario.
this.data =  { Name: this.userName, Email: this.email };
this.dataQuery = new Query().addParams('tokens', this.data as any);
this.eventSettings = { dataSource: this.dataManager, query: this.dataQuery };
}
Server.js file:
app.post("/GetData", (req, res) => {
var query = { CreateBy: req.body.params.tokens.Email };
dbo.collection('ScheduleData').find(query).toArray((err, cus) => {
res.send(cus);
});
});

Kindly try the above sample, if you have any concerns please revert us back for further assistance.
Regards,
M.Vinitha devi

最新更新