ArangoDB Sapper和Perl卡验证

xdnvmnnf  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(98)

我试图通过arangodb(arangojs)使用svelte & sapper和Perl卡创建一个简单的身份验证,所以我在节点服务器方面相当缺乏经验。
在我的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,它将调用routes目录中的login.ts文件。由于我发送了一个post请求,它将查找一个名为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)
}

然而,我没有找到太多帮助我理解我所面临的问题。
此致

6yt4nkrj

6yt4nkrj1#

我没有收到响应的原因很简单,我必须像这样向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)
    }
}

相关问题