gpt4 book ai didi

javascript - 使用 async wait 抽象 Hapi17 路由

转载 作者:行者123 更新时间:2023-12-03 00:53:02 27 4
gpt4 key购买 nike

我正在尝试在 Hapi 17 中转向等待/异步。

主要是我想弄清楚如何将抽象路由重写为可与 async/await 一起使用的路由

以下是我的 routes\dogs.js 文件的摘录

const DogController = require('../controllers/dog')
exports.plugin = {
name: 'dogs',
register: async (server, options) => {
server.route({
method: 'GET',
path: '/api/dogs',
handler: DogController.list
})

使用../controllers/dog的相关摘录

exports.list = (req, h) => {
return Dog.find({}).exec().then((dog) => {
return { dogs: dog }
}).catch((err) => {
return { err: err }
})
}

目前它从 MongoDB 数据库返回狗的列表。我想重写路线,使处理程序变得像

handler: async (request, h) => {
return DogController.list
}

但我假设 Controller 本身需要改变。

最佳答案

有一个options Route 中的属性使您可以更改请求生命周期中 Route 的行为。这意味着您可以创建一个对象并将其与您的路由定义联系起来。

这是您的 dogs.js 路由插件。

exports.plugin = {
async register(server, options) {
const DogController = require('../controllers/dogs');
server.route([
{
method: 'GET',
path: '/dogs',
options: DogController.view
},
]);
},
name: 'dogs-route'
};

这里是你的狗 Controller 。

exports.view = {
description: 'list all the good dogs',
handler: async (request, h) => {
return h.view('index', {'title': 'Home Page Title'});
try {
const dogs = await Dog.find({}).exec();
return {dogs};
}
catch(e){
// or something you want
return Boom.badRequest(e.message, e);
}
}
};

Here是一个完整的示例,您可以分别检查路由和 Controller 。

关于javascript - 使用 async wait 抽象 Hapi17 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52967082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com