簡體   English   中英

如何存儲用戶操作數據? 即userID日期/時間和操作代碼

[英]How do I store user action data? i.e userID date/time and action code

動作代碼是用戶與之交互的任何頁面

請參考下面的javascript / nodejs代碼。

例如,在每個router.get()上,如果用戶正在訪問,我需要將其用戶ID存儲為dateTime和與每個路由器匹配的操作代碼。

 router.get('/', function(request, response) { response.sendFile(path.join(__dirname + '/eventlist.html')); }); router.get('/watchlist', function(request, response) { response.sendFile(path.join(__dirname + '/watchlist.html')); }); router.get('/search', function(request, response) { response.sendFile(path.join(__dirname + '/search.html')); }); app.post('/search', function(req,res){ let inputContent = req.body.srchterm; var sequelize = require('./db'); sequelize.query('SELECT * FROM main_table WHERE jobname = :jobname OR jobstream = :jobstream OR workstation = :workstation ', { replacements: { jobname: inputContent, jobstream: inputContent, workstation: inputContent }, type: sequelize.QueryTypes.SELECT } ) .then(function(searchib) { console.log(searchib); if (searchib == "") { res.send(srcharray); } else { var srcharray = []; searchib.forEach(function(items){ console.log('displaying srchadata'); srcharray.push ({workstation: items.workstation, jobstream: items.jobstream, jobdate: (items.jobdate.toLocaleString('en-GB', { timeZone: 'GMT'})), jobname: items.jobname }); console.log(srcharray); }); // return response.json(srcharray); res.send(srcharray); } }); }); app.use('/', router); 

您需要使用中間件 ,並且在中間件中 ,您需要從用戶那里獲取令牌,您可以在其中解碼用戶令牌以獲取用戶數據,然后使用時間戳存儲該令牌。

創建自己的中間件( storeUserActionDataMiddleware )來存儲數據,如下所示:

function storeUserActionDataMiddleware(req, res, next) {
    let data = {
        userId: 42 /* get userId somehow */,
        dateTime: new Date(),
        actionCode: `${req.method} ${req.originalUrl}`,
    };

    console.log({ data });

    // Store user action data here
    // store(data);

    // then execute routes
    next();
}

如果您只想存儲特定路由器的數據,請使用路由器頂部的中間件,例如:

// only specific router will store user action data
router.use(storeUserActionDataMiddleware);

router.get(/* ... */)
router.post(/* ... */)

或者,如果要在整個應用程序中存儲數據,請使用應用程序頂部的中間件,例如:

// all routes will store user action data
app.use(storeUserActionDataMiddleware);

app.use(/* ... */)
app.get(/* ... */)
app.post(/* ... */)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM