我为 vuetify 项目设置了一个 node.js 服务器。在我的服务器中,我正在解析一个 csv 文件,其中包含有关计划和时间的信息。在我的 vuetify 项目中,有没有办法根据使用客户端的时间从 csv 中获取数据?
答案 0 :(得分:1)
好的,让我们举个例子。
据我所知,您的 CSV 文件中有以下信息:
Time,Activity
07:00,Breakfast
08:00,Go to work
12:00,Lunch break
由于您没有指定,我将使用 example parser,它将所有行作为对象推送到数组中:
[
{ Time: '07:00', Activity: 'Breakfast' },
{ Time: '08:00', Activity: 'Go to work' },
{ Time: '12:00', Activity: 'Lunch break' }
]
您需要将该信息发送给您的客户,因此假设您使用的是 Express,您可以使用以下内容:
const csv = require('csv-parser');
const fs = require('fs');
const express = require('express');
const app = express();
const timeSchedule = [];
function parseCsv() {
return new Promise((resolve, reject) => {
fs.createReadStream('data.csv')
.pipe(csv())
.on('data', (data) => timeSchedule.push(data))
.on('error', (err) => reject(err))
.on('end', () => {
csvParsed = true;
resolve();
});
}
}
app.get('/scheduled-for/:hour', function (req, res) {
// You need to come up with the logic for your case
// As an example, I will assume that if I make a request at any time
// between 7 and 8, I will get "Breakfast"
// between 8 and 9 - "Go to work"
// between 12 and 13 - "Lunch break"
parseCsv().then(() => {
res.json(timeSchedule.find(row => row.Time.startsWith(req.params.hour)))
})
})
请注意,以上所有内容都发生在 Nodejs 服务器上。
从客户端,您必须使用小时参数调用 scheduled-for
GET 句柄。另一种选择是允许后端通过使用 Date 对象来确定请求的时间,但以上对于客户端来说更灵活。鉴于您的客户端请求来自与服务器所在时区不同的时区,它还可以避免不同时区的问题。
假设您在 Vue 应用程序中使用 axios,获取时间表的最简单方法是在您的组件中调用 API:
new Vue({
el: '#app',
data () {
return {
activity: null
}
},
mounted () {
axios
.get('https://urlToYourApi/v1/scheduled-for/' + new Date().getHours())
.then(schedule => {
if (schedule) {
this.activity = schedule.Activity;
}
else {
console.log("No activity found for this hour!");
}
}
}
})
此代码不用于生产!您需要处理很多情况,例如 new Date().getHours()
返回个位数小时,解析 CSV,更不用说域逻辑本身,这取决于您的具体情况。这只是一个简单的例子。我希望它有助于引导您朝着正确的方向前进!