1

server.js で redis 接続を宣言しながら、他のコントローラーまたは other.js から fastify-redis プラグインを使用する方法

サーバー.js

const fastify = require('fastify')({ logger: false })
const routes = require('./routes')

fastify.register(require('fastify-redis'), { host: '127.0.0.1' })

routes.forEach((route, index) => {
    fastify.route(route)
})

const start = async () => {
    try {
        await fastify.listen(3000)
        fastify.log.info(`server listening on ${fastify.server.address().port}`)
        //const { redis } = fastify
        //console.log(redis)
    } catch (err) {
        fastify.log.error(err)
        process.exit(1)
    }
}
start()

コントローラ -> books.js

exports.getBooks = async (request, reply) => {

    //console.log(redis)
    let data = {
        book: 'Book 1',
        author: 'Author 1'
    }

    //return data
    return redis.get('key1') // Not Defined
    //return redis.get('key1')
}

では、他のファイルで Redis インスタンスを使用して、キャッシュ データベース データを実装するために Redis でいくつかの値を設定するにはどうすればよいでしょうか。

4

3 に答える 3

0

私はこのようなことをします: 基本的appに、ルートのブートストラップに使用されるルートでエクスポートされた関数にインスタンスを渡します。

ルート中

module.exports = fastify => [
    {
        url: '/hello',
        method: 'GET',
        handler: async (request, reply) => {
            const { redis } = fastify
            // ...
        }
    },
    {
        url: '/hello',
        method: 'POST',
        handler: async (request, reply) => {
            const { redis } = fastify
            // ...
        }
    }
]

開始時のルートのブートストラップ

app.register(plugin1)
    .register(plugin2)
    .after(() => {
        // bootstraping routes
        // route definition should either be done as a plugin or within .after() callback
        glob.sync(`${__dirname}/routes/*.js`, { cwd: __dirname })
            .map(f => path.resolve(__dirname, f))
            .forEach(file => {
                const routeConfigs = require(file)(app)
                for (let i = 0; i < routeConfigs.length; i += 1) {
                    const routeConfig = routeConfigs[i]
                    app.route(routeConfig)
                }
            })
    })
于 2019-12-25T01:54:18.997 に答える