首页 > 解决方案 > 如何将数据从一条路线传输到另一条路线

问题描述

我实现了用户注册。我有两条路线。

import express from 'express';
import User from '../models/user';

const router = express.Router();

router.post('/signup', async (req, res) => {
    try {
    ...
        const user = new User(
            red.body.name,
            red.body.username,
            red.body.user_email,
            red.body.user_password,
            red.body.user_phone,
        );  
    ...
    } catch (err) {
        return res.status(500).json({
            err: err
        });
    }
});

router.post('/verify', async (req, res) => {
    try {
        ...
        console.log(user);
        ...
    } catch (err) {
        return res.status(500).json({
            err: err
        });
    }
});

我需要从路线发送数据,用户注册,到路线,用户确认。

如何将用户数据发送到第二条路由进行确认?

标签: node.jsexpress

解决方案


实现此功能有两种策略(可能更多):

策略1:存储user在服务器中。

您可以在服务器中存储user对象并为其分配一个唯一键(例如 uuid)。user数据可以存储为全局变量(在 Node.js 进程的内存中),或者如果您使用多个 Node.js 进程,它可以存储在内存数据库(例如 Redis)中。

POST /signup路由处理程序中,user可以将数据写入服务器,并将这个新创建的用户 ID 返回给浏览器。然后,在POST /verify路由处理程序中,服务器将通过其 id 检索相应的用户数据。

策略2:存储user在浏览器中。

另一种策略是在路由处理程序中将整个user数据返回给浏览器POST /signup,并让浏览器在以下POST /verify请求中将其发送回。有两种方法可以实现这个设计(也许更多):

  • 通过 将数据返回user给浏览器Set-Cookie。浏览器会自动将用户数据作为 cookie 发送。

  • user将数据作为纯响应正文返回给浏览器。浏览器将其保存在 localStorage 或 sessionStorage 中。然后,在发送POST /verify请求时,浏览器会读取该数据并将其作为纯 HTTP 请求正文。


推荐阅读