当我的服务器启动时,我需要从外部 API 获取数据,然后将它们保存到我的数据库中。这很好用,但我没有什么问题。 我的保存功能
import { EventFetcher } from './eventFetcher.js'
const eventFetcher = new EventFetcher()
export const reloadEvents = async () => {
const newEventData = await eventFetcher.fetchEvents()
console.log('Aktualizujem udalosti v db...')
eventFetcher.updateLastFetchedData(newEventData)
const response = await fetch('http://localhost:3030/reservations-ms', {
method: 'POST'
})
if (response.ok) {
console.log('Udalosti v databáze aktualizované!')
} else {
console.error('Chyba pri ukladaní udalostí.')
}
}
它向我的本地端点发出 POST 请求,但在我为此路由添加身份验证后它不起作用,因为我没有在服务器端存储 JWT。
app.service(reservationsMsPath).hooks({
around: {
all: [
authenticate('jwt'),
schemaHooks.resolveExternal(reservationsMsExternalResolver),
schemaHooks.resolveResult(reservationsMsResolver)
}
所以我的问题是,我是否需要以某种方式在这里获取令牌,或者还有其他方法可以做到这一点吗?
我以为这样的东西会起作用
import { EventFetcher } from './eventFetcher.js'
import { ReservationsMsService, getOptions } from '../services/reservations-ms/reservations-ms.class.js'
const eventFetcher = new EventFetcher()
const reservationsService = new ReservationsMsService()
export const reloadEvents = async () => {
const newEventData = await eventFetcher.fetchEvents()
console.log('Aktualizujem udalosti v db...')
eventFetcher.updateLastFetchedData(newEventData)
try {
const response = await reservationsService.post(newEventData)
if (response.ok) {
console.log('Udalosti v databáze aktualizované!')
} else {
console.error('Chyba pri ukladaní udalostí.')
}
} catch (error) {
console.error('An error occurred while sending the POST request:', error)
}
}
但现在它说
错误:您必须提供模型(初始化的 knex 对象)
您可能不需要向服务器发出请求,而是直接从
app
文件导入 app
对象,或者在应用程序文件中注册一个 setup hook 来执行您需要的初始化:
const eventFetcher = new EventFetcher()
app.hooks({
setup: [
async (context: HookContext, next: NextFunction) => {
// E.g. wait for MongoDB connection to complete
const newEventData = await eventFetcher.fetchEvents()
const reservationsService = context.app.service('reservations')
console.log('Aktualizujem udalosti v db...')
eventFetcher.updateLastFetchedData(newEventData)
try {
const reservation = await reservationsService.create(newEventData)
console.log(reservation)
} catch (error) {
console.error('An error occurred while sending the POST request:', error)
}
await next()
}
]
})