如何组合 node.js 应用程序的两个不同逻辑部分? (电报机器人和 http 服务器)
How to combine two different logic parts of node.js application? (telegram-bot and http-server)
这是我的第一个 node.js 真正的应用程序。我从使用特殊框架 Node-Telegram-Bot-Api
创建电报机器人开始
此机器人处理一系列问题,如姓名、phone、位置和照片、音频消息,将文件保存到服务器并将所有这些员工加入一个对象并将其写入 MongoDB .
这只是文件 index.js,我在其中完成了所有操作...
现在我面临新任务 - 为这些数据创建网络界面。我安装了 express-generator 并用它创建了站点,准备好使用 handlebar 视图,一些路线,sass 支持和服务静态文件 - 所有用于制作网络界面的有用的东西......
问题是 - 如何合并两个部分:
telegram-bot 部分,用数据和
填充数据库
express http-server,支持路由,查看和显示来自数据库的数据,还提供文件:照片和语音消息...
如果这个问题很愚蠢,我很抱歉。但这是我在node.js的第一部真正的作品,请理解我。
由于您只需要使用Express与数据库中的数据进行交互,您有以下选择:
- 公开一个 API 允许任何客户端检索数据。客户端可以是移动应用程序、其他服务或 Web 应用程序。
- 创建一个传统的 Express 应用程序(就像您使用 express-generator 所做的那样),从数据库中检索数据并将其与视图一起传递。
(1) 的一个简单粗暴的例子看起来像(省略了错误处理):
const express = require('express')
const mysql = require('mysql')
const app = express()
const router = express.Router()
const connection = mysql.createConnection({ /* ... */ })
connection.connect()
app.use(express.urlencoded({ extended: true }))
app.use(express.json())
router.get('/', async (req, res) => {
const results = await new Promise((resolve, reject) => {
connection.query('SELECT * FROM messages', (error, results) => {
if (error) {
reject(error)
return
}
resolve(results)
})
})
res.json(results)
})
app.use('/messages', router)
app.listen(process.env.PORT)
对于 (2),它基本上是相同的,除了你会调用:
res.render('viewName', results)
您的 Express 应用程序和电报机器人将彼此独立。
这是我的第一个 node.js 真正的应用程序。我从使用特殊框架 Node-Telegram-Bot-Api
创建电报机器人开始此机器人处理一系列问题,如姓名、phone、位置和照片、音频消息,将文件保存到服务器并将所有这些员工加入一个对象并将其写入 MongoDB .
这只是文件 index.js,我在其中完成了所有操作...
现在我面临新任务 - 为这些数据创建网络界面。我安装了 express-generator 并用它创建了站点,准备好使用 handlebar 视图,一些路线,sass 支持和服务静态文件 - 所有用于制作网络界面的有用的东西......
问题是 - 如何合并两个部分:
telegram-bot 部分,用数据和
填充数据库
express http-server,支持路由,查看和显示来自数据库的数据,还提供文件:照片和语音消息...
如果这个问题很愚蠢,我很抱歉。但这是我在node.js的第一部真正的作品,请理解我。
由于您只需要使用Express与数据库中的数据进行交互,您有以下选择:
- 公开一个 API 允许任何客户端检索数据。客户端可以是移动应用程序、其他服务或 Web 应用程序。
- 创建一个传统的 Express 应用程序(就像您使用 express-generator 所做的那样),从数据库中检索数据并将其与视图一起传递。
(1) 的一个简单粗暴的例子看起来像(省略了错误处理):
const express = require('express')
const mysql = require('mysql')
const app = express()
const router = express.Router()
const connection = mysql.createConnection({ /* ... */ })
connection.connect()
app.use(express.urlencoded({ extended: true }))
app.use(express.json())
router.get('/', async (req, res) => {
const results = await new Promise((resolve, reject) => {
connection.query('SELECT * FROM messages', (error, results) => {
if (error) {
reject(error)
return
}
resolve(results)
})
})
res.json(results)
})
app.use('/messages', router)
app.listen(process.env.PORT)
对于 (2),它基本上是相同的,除了你会调用:
res.render('viewName', results)
您的 Express 应用程序和电报机器人将彼此独立。