$addToSet在我的API中无法与mongoDB一起使用

oalqel3c  于 2023-05-06  发布在  Go
关注(0)|答案(1)|浏览(111)

我知道有很多关于这个的主题,但我没有找到任何解决我的问题的方法,虽然。
为了训练我的JS技能,我决定创建一个报价生成器,所以我创建了API和前端。
所以,直到现在,一切都运行得很完美,但当我决定创建一个“类别”系统时,我的问题就来了。
其原理是创建一个类别标题,然后每次将类别赋予一个引用时,数据库中一个名为“quoteId”的数组将被更新以存储引用ID。
下面是mongoDB中Category的模型:

const mongoose = require('mongoose');

const categorySchema = mongoose.Schema({
  title: { type: String, required: true },
  quoteId: { type: Array, required: false },
  userId: { type: Array, required: false },
});

module.exports = mongoose.model('Category', categorySchema);

现在,更新category集合中的quoteId数组的代码:

exports.setCategoryProduct = (req, res) => {
  Category.updateOne(
    { title: req.params.categoryTitle },
    { $addToSet: { quoteId: req.body.quoteId } }
  )
    .then(() =>
      res.status(201).json({ message: 'Category updated !', status: 201 })
    )
    .catch((error) => res.status(500).json({ error: error, status: 500 }));
};

因此,当我在POSTMAN中执行PUT请求时,它返回“Category updated”消息,但当我检查集合时,我可以看到quoteId仍然为空...我不明白为什么它不更新,而请求似乎是成功的...
感谢你们所有人的帮助。

pu82cl6c

pu82cl6c1#

替换此

{ $addToSet: { quoteId: req.body.quoteId } }

用这个代码

{ $addToSet: { quoteId:{$each: req.body.quoteId } }}

根据mongodb文档

相关问题