首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Nuxt 3服务器/api中传递params?

如何在Nuxt 3服务器/api中传递params?
EN

Stack Overflow用户
提问于 2022-05-28 09:59:40
回答 3查看 2.1K关注 0票数 2

我想不出如何在Nuxt 3中将params传递给匿名函数。

index.vue:

代码语言:javascript
复制
<template>
  <form @submit.prevent="signUpNewsletter()">
    <input type="email" placeholder="example@x.com" v-model="userEmail">
    <input type="submit" value="Submit">
  </form>
</template>

<script setup>
const userEmail = ref('x@x.de')

function signUpNewsletter () {
  useAsyncData(
    'newsletter',
    () => $fetch('/api/sign_up_news', {
      method: 'POST', // Post method works
      body: {
        email: userEmail.value
      }
    })
  )
}
</script>

server/api/sign_up_news.js:

代码语言:javascript
复制
import { createClient } from '@supabase/supabase-js'

export default async (email) => { // can't read the parameter
  const SUPABASE_KEY = 'key123'
  const SUPABASE_URL = 'url.supabase.co'
  const supabase = createClient(SUPABASE_URL, SUPABASE_KEY)

  const { data, error } = await supabase
    .from('newsletter')
    .insert([{ email }]) // <<< Fails!
  return data
};

working:

代码语言:javascript
复制
import { createClient } from '@supabase/supabase-js'

export default async () => {
  const SUPABASE_KEY = 'key123'
  const SUPABASE_URL = 'url.supabase.co'
  const supabase = createClient(SUPABASE_URL, SUPABASE_KEY)

  const { data, error } = await supabase
    .from('newsletter')
    .insert([{ email: 'hi@it.works' }]) // <<< Works!
  return data
};

您知道如何将参数传递到Nuxt 3服务器/api吗?或者你有消息来源?现在是官方文档是空白的

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-05-28 12:18:23

使用useBody

文档中提到了它:https://v3.nuxtjs.org/guide/features/server-routes#handling-requests-with-body

你只需要读一遍

代码语言:javascript
复制
import { createClient } from '@supabase/supabase-js'

export default async (event) => { // can't read the parameter
  
  const body = await useBody(event)
  const SUPABASE_KEY = 'key123'
  const SUPABASE_URL = 'url.supabase.co'
  const supabase = createClient(SUPABASE_URL, SUPABASE_KEY)

  const { data, error } = await supabase
    .from('newsletter')
    .insert([{ email: body.email }]) 
  return data
};
票数 1
EN

Stack Overflow用户

发布于 2022-05-28 12:13:56

我不认为你能像你所做的那样直接把平行线传递到函数中。

文档的另一部分中,它指出当您将一个主体传递到server/api函数时,您需要使用await useBody(event)检索它。

票数 2
EN

Stack Overflow用户

发布于 2022-12-02 06:48:54

更新,我今天才发现useBody现在被废弃了,它被readBody取代了。

请参阅此问题以供参考。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72414694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档