如何使用 node 和 reactjs 向 mongoose 数组添加注释?

Posted

技术标签:

【中文标题】如何使用 node 和 reactjs 向 mongoose 数组添加注释?【英文标题】:how to add comments to mongoose array with node and reactjs? 【发布时间】:2021-12-22 14:34:16 【问题描述】:

所以我在尝试将 cmets 添加到我的 mongoDB 数据库中已经存在的某些数据时遇到了问题。我想这样做,以便我可以为保存在我的数据库中的每个帐户添加、删除和更新 cmets,但我不确定我做错了什么。我已经设置了我的前端来发送一条新评论和所有需要附带的数据。它成功到达我的后端,在我的后端它说它运行并保存但它没有,当我重新加载页面时,我的数据中的 cmets 数组仍然为 0。

Account.findByIdAndUpdate(
   _id: comment.accountId ,
  
    $push: Account:  comments: comment ,
  ,
   new: true, upsert: true 
).exec(function (err, task) 
  if (err) 
    return res
      .status(400)
      .send( message: "Failed to add comment due to invalid params" );
  
  console.log("successfully uploaded comment");
  return res.status(200).send(task);
);

所以我们在这里加载特定帐户,然后将新评论推送到我的猫鼬模式中的 cmets 数组。当我取出“帐户:对象并仅使用 cmets:comment 对对象进行 ahve 时,它​​说后端存在内部错误,找不到我猜的参数,这将是 cmets 数组。

我不知道为什么这会是一个问题。下面也是我的猫鼬模式。

    const AccountSchema = new Schema(
  username: 
    type: String,
  ,
  name: 
    type: String,
  ,
  date: 
    type: Date,
    default: Date.now,
  ,
  description: 
    type: String,
  ,
  latitude: 
    type: Number,
  ,
  longitude: 
    type: Number,
  ,
  comments: [
    
      id: Number,
      text: String,
      type: String,
      date: Date,
      replies: [ id: Number, text: String, type: String, date: Date ],
    ,
  ],
);

我没有正确设置我的架构吗?还是我忘记在某处添加一些东西。任何帮助都会很棒,谢谢!

【问题讨论】:

你不需要重复 'Account',试试 "$push: cmets: comment ," 代替 【参考方案1】:

只是想发布一个更新,我改变了 findbyidandupdate 上的选项,我添加了新的和安全的并且 upsert 全部为真,然后我意识到我的主要问题是我的架构中的 cmets 数组已设置键入:字符串,而不是数组。哈哈,谢谢你们的帮助。

【讨论】:

【参考方案2】:

您的更新查询的$push 规范似乎是罪魁祸首。在代码中,它说:

$push: Account:  comments: comment 

但是您的Account 模型没有“帐户”字段可将对象推送到其中。要将新元素插入“cmets”数组,请改为:

$push:  comments: comment 

【讨论】:

我刚刚尝试过,现在我收到了 400 错误请求。就像它没有在架构中找到 cmets 数组一样。它直接进入我的捕获错误。如果我的数据还没有 cmets 数组,是否需要在推送中进行设置?比如检查数组是否存在,如果存在添加注释,如果不添加数组则添加注释? 不,它不需要存在 - 当你 $push 时,MongoDB 会为你创建一个空数组。检查您在回调中收到的err 错误(通过console.log 或其他方式)。我的猜测是,“new: true”会破坏事物,但您需要实际查看错误才能确定。

以上是关于如何使用 node 和 reactjs 向 mongoose 数组添加注释?的主要内容,如果未能解决你的问题,请参考以下文章

反应 js:axios 向 node.js api 发布请求

在组件reactjs之外更改后如何使用全局语言环境

向 ReactJS 添加 JS 函数 - Spotify Web Playback SDK

如何以 Node JS 作为后端将 Mysql 数据获取并显示到 ReactJS 前端?

如何使用 MongoDB + NodeJS Express 向 ReactJS React Router 和 Redux 添加登录身份验证和会话?

如何使用node js,reactjs,express从实际网页中的mongodb中获取数据