【问题标题】:Updating a value via a FaunaDB query通过 FaunaDB 查询更新值
【发布时间】:2021-10-10 20:55:14
【问题描述】:

我有一个ReactJS NextJS web-app。以下代码将正确的值输出到terminal,但它根本无法更新database。因此,我认为 faunaDB Update 函数指定不正确。所有4 console.log 调用都输出正确的值。

const faunadb = require("faunadb");

// your secret hash
const secret = process.env.FAUNADB_SECRET_KEY;
const q = faunadb.query;
const client = new faunadb.Client({ secret });

console.log("CALLLED API")

module.exports = async (req, res) => {
  const formData = req.body;
  console.log("API CALL");
  try {
    const dbs = await client.query(
      console.log("API UPDATE"),
      console.log(formData.likes[0].data.like + 1),

      q.Update(
        q.Ref(q.Collection('Likes'), '__likes_reference__'),
        {
          data: {
            like: formData.likes[0].data.like + 1,
          },
        }
      )
    );
    // ok
    res.status(200).json(dbs.data);
  } catch (e) {
    // something went wrong
    res.status(500).json({ error: e.message });
  }
};

如何增加数据库中likes 的值?

【问题讨论】:

  • 添加问题中代码的输出

标签: javascript reactjs next.js faunadb


【解决方案1】:

这是你的参考 id 'likes_reference' 你的一些随机生成的数字。如果该数字存在,则使用它从集合中获取文档的引用,您可以将输出添加到问题中以加深理解

  like: (formData.likes[0].data.like + 1),
          

你可以用括号括起来喜欢计数,也可以尝试

【讨论】:

    【解决方案2】:

    我使用以下代码将likes 的值增加1

    q.Update(
                q.Ref(q.Collection('Likes'), '__likes_reference__'),
                    {
                        data: {
                            like: q.Add(
                                q.Select(
                                    ['data', 'like'],
                                    q.Get(
                                        q.Ref(
                                            q.Collection('Likes'),
                                            '__likes_reference__'
                                        )
                                    )
                                ),
                                1
                            )
                        }
                    },
                )
    
    

    【讨论】:

    • 在单个事务中读取值并递增它是避免客户端请求引起的竞争条件的好方法。 ? 交换此代码是否解决了您的问题?那你能把这个答案标记为已解决吗?
    猜你喜欢
    • 2018-11-01
    • 2017-07-18
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多