繁体   English   中英

如何使用 Prisma 单独更新字段?

[英]How can I UPDATE fields separately with Prisma?

我有一个名为Post的对象,其中包含我需要能够单独更新的字段。 例如,该对象将具有三个字段: title content summary

用例

我可以创建一个帖子对象并将其保存在我的数据库中,方法是填写字段title ,其他字段为空字符串。 我的想法是能够通过它的 ID 转到单个帖子页面,然后在需要时更新其他字段。

在我的页面上,我有此代码only更新标题:

    const updateTitleData = async () => {
            try {
                await fetch(`/api/story/${id}`, {
                    method: 'PUT',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify(title)
                })
                refreshData()
            } catch (error) {
                toast.error('Document could not be updated')
                console.error(error);
            }
        };

在我的API路由中,我有以下内容:

    const storyId = req.query.id
    const {title, content, summary} = req.body
     else if (req.method !== 'PUT') {
            console.log("Note could not be modified")
            res.status(400).json({message: "Note could not be modified"})
        } else {
           await prisma.story.update({
                where: {id: storyId},
                data: {
                    title,
                    content,
                    summary
                }
            })
            res.status(200).json({message: ' updated'})
        }

我无法让它工作,当我以这种方式使用它时不会发生突变,

const {title, content, summary} = req.body

但是当我这样的时候

const title = req.body
const content = req.body
const summary = req.body

如果我只更新其中一个,我会得到一个突变,它会用相同的值更新所有 3 个字段。

我怎样才能一次只更新一个字段?

假设title是一个字符串。 如果你路过

body: JSON.stringify(title)

在 API 中, req.body将是一个字符串。 当你在做的时候

const title = req.body
const content = req.body
const summary = req.body

然后这个字符串将存储在所有三个变量中。 因此,您帖子的所有三个属性都将更新为相同的值。

通常你会传递类似的东西:

body: {
  title: "new title"
}

在 API 中。

那么身体就是那个物体。 如果你这样做

const {title, content, summary} = req.body

title将是字符串new titlecontentsummary将是undefined的。

然后您可以使用这些值相应地更新您的数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM