arangodb - Sapper & Polka 认证
问题描述
我正在尝试使用 svelte & sapper 以及 polka 通过 arangodb (arangojs) 创建一个简单的身份验证。所以我在节点服务器方面相当缺乏经验。
在我的login.svelte
我发送一个请求:
const response = await fetch("/login",
{
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({username: event.target[0].value, password: event.target[1].value})
}).catch((error => console.error(error)))
这将,因为sapper
调用login.ts
路由目录中的文件。因为我正在发送一个发布请求,所以它会查找一个名为post
:
import Database from '../server/database/index'
export async function post(req, res, next) {
try {
const DB = await Database.getInstance(req.body.username, req.body.password)
await DB.createCollections()
const sessionToken = await DB.getDatabase().login(req.body.username, req.body.password)
if (!sessionToken) throw new Error('no session token received')
req.session = {}
req.session.user = true
req.session.refresh_token = sessionToken
res.end()
next()
return res
} catch (error) {
console.error('login.ts:post', error)
}
}
在这里,我尝试登录数据库。成功后,我会收到一个sessionToken
,据我所知,我需要在前端“登录”。
回到我的login.svelte
我收到回复。但是尸体不见了,我不明白为什么。
可能是因为我忘记了一些东西server.ts
try {
polka()
.use(bodyparser.json())
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.listen(PORT, (err: any) => {
if (err) console.log('error', err)
})
} catch (error) {
console.error('error on server API', error)
}
但是,我没有找到太多可以帮助我理解我面临的问题的东西。
亲切的问候
解决方案
我没有收到回复的原因很简单。我不得不res.end()
像这样将数据添加到函数中:
export async function post(req, res, next) {
try {
const DB = await Database.getInstance(req.body.username, req.body.password)
await DB.createCollections()
const sessionToken = await DB.getDatabase().login(req.body.username, req.body.password)
if (!sessionToken) throw new Error('no session token received')
res.end(JSON.stringify(sessionToken))
next()
return res
} catch (error) {
console.error('login.ts:post', error)
}
}
推荐阅读
- mysql - 无论我查询什么,MySQLWorkbench 都会给我相同的响应
- php - Laravel,以 10 为步长验证整数
- magento - 如何将块添加到另一个 - Magento 2
- android - 将 RC 控制器连接到 Android 模拟器
- testflight - 我在哪里可以在 appcenter.ms testflight 集成中输入我的应用专用密码?
- javascript - 在 cordova-plugin-file (iOS) 的 FileReader 上调用 readAsArrayBuffer 方法时出现内存不足错误
- python - Django 绑定表单无效但未引发 ValidationError
- spring-boot - IntelliJ 不获取自己的 spring 配置元数据
- javascript - Rails 无法删除 Javascript 问题
- javascript - 使用拼接后导致“未定义”