在 Nodejs 的另一种方法中的一种方法中使用来自函数的响应
Using response from a function in one method in another method in Nodejs
我有这个 returns 和 URL 的功能,我想在另一种方法中使用相同的 URL。我该怎么做?
代码如下:
router.post('/', async (req, res) => {
let imageUrl
try {
if (req.body.base64URL) imageUrl = await uploader(req.body.base64URL)
else if (req.body.url) imageUrl = req.body.url
else {
res.redirect('/create')
return
}
res.render('create', { image: imageUrl })
} catch (error) {
console.log(error, 'error')
}
})
router.post('/details', async (req, res) => {
try {
const data = await creator(req.body, /* use imageUrl here */)
} catch (error) {
console.log(error, 'error')
}
})
如您所见,我在一个方法中获取了 ImageUrl 的值,我想在另一个方法中使用相同的值。请帮我解决一下。
我可以建议 3 个选项:
在 /details
请求中发送 imageUrl
您的客户似乎已经拥有 URL,因为您 return 它在 /
的资源中。如果这些路由在逻辑上是分开的,那么再发送一次就有意义了。
缓存class/object
使用服务器内存存储 imageUrls。创建一个单例对象作为缓存字典。您必须在 /
路由中添加一些唯一 ID,return 将其发送到客户端并将相同的 ID 发送到 /details
。
缺点是如果服务器 crashes/restarts,你会丢失内存中的图像。
保存到数据库
将上传图片的 imageUrls 存储在数据库中,return 客户端的唯一 ID。这类似于缓存,除了持久性并且需要您将数据库添加到设计中。我假设“创建者”函数将请求信息存储在数据库中?
我也在质疑是否需要两条路线,似乎 /
和 /details
可以合并为一条路线。它们分开有什么特别的原因吗?
因此,正如指出的那样,这也是我最初的想法,因为我在 / POST
路由中将 imageUrl
发送给客户端,建议发回 imageUrl
当客户端点击 /details POST
路由时。
我实现这一点的方法是,我创建了另一个 input
元素,并将显示设置为 none
,然后在该输入中添加了 imageUrl
的值。
这是最容易实施的解决方案,无需在后端将 imageUrl
设为全局。正如@EcksDy 提到的,还有其他实现方法。
我有这个 returns 和 URL 的功能,我想在另一种方法中使用相同的 URL。我该怎么做?
代码如下:
router.post('/', async (req, res) => {
let imageUrl
try {
if (req.body.base64URL) imageUrl = await uploader(req.body.base64URL)
else if (req.body.url) imageUrl = req.body.url
else {
res.redirect('/create')
return
}
res.render('create', { image: imageUrl })
} catch (error) {
console.log(error, 'error')
}
})
router.post('/details', async (req, res) => {
try {
const data = await creator(req.body, /* use imageUrl here */)
} catch (error) {
console.log(error, 'error')
}
})
如您所见,我在一个方法中获取了 ImageUrl 的值,我想在另一个方法中使用相同的值。请帮我解决一下。
我可以建议 3 个选项:
在 /details
请求中发送 imageUrl
您的客户似乎已经拥有 URL,因为您 return 它在 /
的资源中。如果这些路由在逻辑上是分开的,那么再发送一次就有意义了。
缓存class/object
使用服务器内存存储 imageUrls。创建一个单例对象作为缓存字典。您必须在 /
路由中添加一些唯一 ID,return 将其发送到客户端并将相同的 ID 发送到 /details
。
缺点是如果服务器 crashes/restarts,你会丢失内存中的图像。
保存到数据库
将上传图片的 imageUrls 存储在数据库中,return 客户端的唯一 ID。这类似于缓存,除了持久性并且需要您将数据库添加到设计中。我假设“创建者”函数将请求信息存储在数据库中?
我也在质疑是否需要两条路线,似乎 /
和 /details
可以合并为一条路线。它们分开有什么特别的原因吗?
因此,正如指出的那样,这也是我最初的想法,因为我在 / POST
路由中将 imageUrl
发送给客户端,建议发回 imageUrl
当客户端点击 /details POST
路由时。
我实现这一点的方法是,我创建了另一个 input
元素,并将显示设置为 none
,然后在该输入中添加了 imageUrl
的值。
这是最容易实施的解决方案,无需在后端将 imageUrl
设为全局。正如@EcksDy 提到的,还有其他实现方法。