Javascript 如何在不重新启动Express.js项目的情况下刷新API端点

Javascript 如何在不重新启动Express.js项目的情况下刷新API端点,javascript,node.js,database,express,discord.js,Javascript,Node.js,Database,Express,Discord.js,我正在为我的Discord机器人制作一个API,它可以让你获得关于某人级别和XP的数据。然而,它成功了。这方面有一个主要缺陷,就是为了正确更新JSON对象中的数据。我的机器人必须重新启动 代码如下: const http = require('http'); const express = require('express'); const app = express(); const db = require("quick.db") let index = 0; app.get("/", (r

我正在为我的Discord机器人制作一个API,它可以让你获得关于某人级别和XP的数据。然而,它成功了。这方面有一个主要缺陷,就是为了正确更新JSON对象中的数据。我的机器人必须重新启动

代码如下:

const http = require('http');
const express = require('express');
const app = express();
const db = require("quick.db")
let index = 0;
app.get("/", (request, response) => {

  response.sendStatus(200);
});
app.listen(process.env.PORT);
setInterval(() => {
  http.get(`http://${process.env.PROJECT_DOMAIN}.glitch.me/`);
}, 20000);
require('./index.js')

let levelldb = db.all().filter(data => data.ID.startsWith(`Leveling`)).sort((a, b) => b.data - a.data);
    { levelldb.length = 10; }

var levelldbs = function () {
  app.get('/api/levelldb', async function (req, res) {
    res.send(levelldb)
  })
  console.log(`Refreshed`)
} 
levelldbs();
这就是我尝试访问website.com/api/leveldb时的样子——它是成功的。 注意:请忽略空值,这完全意味着数据正在等待收集,最终当有人获得xp和等级时,数据将显示在那里

代码没有错误,它应该如何工作。因此,我想知道如何在不重新启动项目的情况下自动更新数据。我尝试过使用setInterval和setTimeout方法,但都没有成功


Welp我知道每次重新启动以显示数据对我来说都会很烦人,但我只想知道我是否可以这样做

您正在分配一个查询结果,由您的
/api/leveldb
路由返回,因此结果总是相同的。将从数据存储中提取的数据移动到中,以便根据请求进行动态提取

此外,您的app.get('route\u name\u here')不需要包装到函数中。这是要从api返回的数据的外部访问点

app.get('/api/levelldb', async function (req, res) {
    let levelldb = db.all()
          .filter(data => data.ID.startsWith(`Leveling`))
          .sort((a, b) => b.data - a.data);
        { levelldb.length = 10; }

    res.send(levelldb)
}

阅读相关文章也可能有所帮助。

这似乎解决了我的问题。此外,我还必须修复最后一行(右大括号)上的语法错误,现在应该可以了!非常感谢。