首页 > 解决方案 > 如何将数据传递给 Fauna Create 函数

问题描述

我正在构建一个 Next 站点,并决定使用 Fauna 作为我的数据库。在前端,我将一个对象传递给我的后端 API,如下所示:

  async function onSubmit(values) {
    try {
      const data = await postData("/api/put", values);
    } catch (error) {
      console.error(error);
    }

    async function postData(url = "", data = {}) {
      const response = await fetch(url, {
        method: "POST",
        mode: "cors",
        cache: "no-cache",
        credentials: "same-origin",
        headers: {
          "Content-Type": "application/json"
        },
        redirect: "follow",
        referrer: "no-referrer",
        body: JSON.stringify(data)
      });

      return await response.json(); // parses JSON response into native JavaScript object
    }
  }

我的后端如下所示:

const faunadb = require("faunadb");

// your secret hash
//! -- Replace with secret for prod.
const secret = "Key...";
const q = faunadb.query;
const client = new faunadb.Client({ secret });

module.exports = async (req, res) => {
  const data = JSON.stringify(req.body, null, 2);
  console.log(data);
  return client
    .query(
      q.Create(q.Collection("pages"), {
        data: {
          name: data.name,
          email: data.email,
          title: data.title,
          body: data.body
        }
      })
    )
    .then(ret => console.log(ret))
    .catch(err => console.log("error", err));
};

似乎在退货中,data无法识别,并且送回 Fauna 收藏的项目是空的。有人可以告诉我我做错了什么吗?

Fauna Docs没有显示带有变量的示例。

标签: reactjsexpressnext.jsfaunadb

解决方案


我将代码更改为以下内容:

module.exports = async (req, res) => {
  console.log(req.body.name);
  const bodyData = JSON.stringify(req.body, null, 2);
  // console.log(bodyData);
  return client
    .query(
      q.Create(q.Collection("pages"), {
        data: {
          name: req.body.name,
          email: req.body.email,
          title: req.body.title,
          body: req.body.body
        }
      })
    )
    .then(ret => console.log(ret))
    .catch(err => console.log("error", err));
};

现在效果很好!


推荐阅读