使用 mongoose 在 MongoDB 上更新

威廉·赫芬納

我正在嘗試更新 MongoDB 的用戶電子郵件,但我需要事先驗證此電子郵件是否尚不存在。在我的架構中,我有:

const UserSchema = new Schema({
  fullName: { type: String, required: true },
  email: { type: String, unique: true, required: true  }
});

在我的控制器中:

exports.update = (req, res) => {
  const entries = Object.keys(req.body);
  const updates = {};

  for (let i = 0; i < entries.length; i += 1) {
    updates[entries[i]] = Object.values(req.body)[i];
  }

  const userId = req.body._id ? req.body._id : req.userId;
  User.updateOne({ _id: userId }, { $set: updates }).exec((err, data) => {
    if (err) {
      res.status(500).send({ message: "Failed!" });
      return;
    }
    if (data.n === 0) {
      res.status(404).send({ message: "Not Found!" });
      return;
    }
    res.status(200).send({ message: "Success!" });
  });
      
};

它運行良好,但如果我輸入已使用的電子郵件,我會更新。我該如何預防?

傑夫

由於您unique: true在架構中使用,因此您可以更新該值,並且只有success在它不重複時才會返回

順便說一句,如果您想返回特定於email存在的消息錯誤,您可以檢查錯誤是否是代碼11000

像這樣的東西:

User.updateOne({ _id: userId }, { $set: updates }).exec((err, data) => {
    if (err) {
      if(err.code === 11000){
         return res.status(400).send({ message: "Uniques values already exists"});
      } else {
         return res.status(500).send({ message: "Failed!" });
      }
    }
    if (data.n === 0) {
      res.status(404).send({ message: "Not Found!" });
      return;
    }
    res.status(200).send({ message: "Success!" });
  });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 mongoose/mongoDB 创建/更新对象

使用 mongoose 更新 mongoDB 中的数组

如何使用 mongoose 更新 MongoDB 中的数组?

如何使用 Mongoose 更新 MongoDB 中的文档

mongoose / mongodb不会使用PUT更新

Mongoose 更新查询 - Mongoose/Mongodb

使用Mongoose其他行为更新$ inc,然后更新MongoDB

使用Mongoose的MongoDB参考

使用Mongoose和Node.js更新MongoDB中的数据

什么是使用Mongoose更新MongoDB中许多记录的正确方法

如何使用MongoDB(Mongoose)在集合中添加/更新ObjectId数组?

如何使用Mongodb / Mongoose中的子文档处理深度更新?

是否可以在post方法中更新mongodb集合(使用Mongoose)?

如何使用Mongoose更新MongoDB中的一个属性?

无法在Mongoose上使用MongoDB Cookbook“查询日期范围”

在对象数组上使用Mongoose / MongoDB $ addToSet功能

在mongoDB / Mongoose上使用查找和聚合来获取数据

在 MongoDB 上使用 Express 和 mongoose 连接模式

MongoDB-Mongoose:如何使用Mongoose同时更新两个单独的嵌入式文档?

产品未更新 - Mongoose MongoDB

使用mongoose从mongodb获取条目

MongoDB使用Mongoose保存问题

使用mongoose与Mongodb进行聚合

使用mongoose从mongodb获取对象

使用条件更新mongodb上的嵌套元素

如何使用Mongoose更新具有未知数量可能字段的MongoDB集合

如何使用 mongoose 在单个 mongodb 文档中更新数组中的多个对象

使用mongoose通过更新方法向mongodb中的现有文档添加新字段

如何使用Node.js / Mongoose / MongoDB同时更新2个集合