我没有找到任何资源或包来使用下一个会话内存以外的其他存储,其中内存不是适合生产的解决方案?
我想使用文件存储(首选)或db .
您可以将会话存储在例如sqlite3中。
- install sqlite 'npm install connect-sqlite3'
- 创建一个新文件,例如'get-session.js',并这样写:
import nextSession from "next-session";
import { expressSession, promisifyStore } from "next-session/lib/compat";
var SQLiteStore = require("connect-sqlite3")(expressSession);
export const getSession = nextSession({
name: "WIB_SESSION",
store: promisifyStore(
new SQLiteStore({ dir: "./tmp/", table: "wiberSessions" })
),
});
- 创建一个新的api端点,并把这个。
import { getSession } from "../../lib/get-session.js"; export default async function handler(req, res) { const session = await getSession(req, res); const data={hello:"hello im a data in session"} session.myData= data res.status(200).json({save:"session saved"}); } export const config = { api: { externalResolver: true, }, };
- 现在从你的页面
import { getSession } from "../lib/get-session";
export async function getServerSideProps({ req, res }) {
const session = await getSession(req, res);
return {
props: {
dataInSession: session.myData,
},
};
}
现在你将有一个名为"WIB_SESSION"./tmp/wiberSessions.
这里有一个带有next的基本项目。Github
第一次加载页面时,第一次当你点击按钮重新加载页面时你会得到cookie和/tmp/sqlite。withcookie
中的值
的问候