MongoDB努力更新数据库

Posted

技术标签:

【中文标题】MongoDB努力更新数据库【英文标题】:MongoDB struggling to update DB 【发布时间】:2021-11-23 05:26:07 【问题描述】:

我是 MongoDB 的新手。如果用户喜欢卡片,我有一个数据库,其中将存储卡片数据并更新计数。给我一个总点赞数。

我的 res 一直是 400,但我不知道为什么。我得到了手动工作的更新方法。但是当我把它放到一个函数中时它就不起作用了。

我正在使用 NEXT JS API 路由。

import dbConnect from "../../utils/dbConnect";
import FavSchema from "../../models/FavoriteModel";

dbConnect();

export default async (req, res) => 
  const  method  = req;

  switch (method) 
    case "GET":
      try 
       catch (error) 
        res.status(400).json( success: false );
      
      break;
    case "POST":
      try 
        const query = 
          cardId: req.body.cardHandler,
        ;

        await FavSchema.findOneAndUpdate(
          query,
           $inc:  favCount: 1  ,
           upsert: true 
        );
        res.send("Succesfully saved.");
       catch (error) 
        res.send(400,  error: "Error" );
      
  
;

功能

 const handleCardFavClick = (id) => 
    const cardHandler = 
      id,
    ;
    fetch("/api/favcounter", 
      method: "POST",
      body: JSON.stringify(cardHandler),
      headers: 
        "Content-Type": "application/json",
      ,
    )
      .then((response) => response.json())
      .then((data) => console.log(data));
    dispatch(makeFav(cardHandler));
  ;

谢谢!

【问题讨论】:

什么是错误? catch (error) res.send(400, error: "Error" ); 您是否尝试过打印错误以查看其内容,而不是返回一般状态码? 【参考方案1】:

你正在路过

 id: "<id>"  

作为 API 中的主体并从 req.body 中读取“cardHandler”,即“未定义”。

在您的 POST API 中,替换

const query = 
      cardId: req.body.cardHandler,
    

const query = 
      cardId: req.body.id
    

【讨论】:

不,我试过了,但没有工作 这也是您的代码中的一个问题。您在 API 中传递 id: "" 并从 req.body 读取“cardHandler”,这是“未定义的”。现在,尝试在 catch 块中打印“错误”。这是什么? 当我添加错误时它只是返回“400” 使用console.log(error);在 POST API 的 catch 块中。在此处评论它所说的内容。 TypeError: 无法读取未定义的属性“findOneAndUpdate”

以上是关于MongoDB努力更新数据库的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 mongodb 中更新/更新记录吗?数据源是kafka

MongoDB数据库中更新与删除数据

MongoDB(课时17 更新函数)

MongoDB 更新文档

MongoDB批量更新不同查询条件的数据

Mongodb数据更新命令(updatesave)