【问题标题】:MongoError: E11000 duplicate key error collection: tracker-db.users index: username_1 dup key: { username: null }"MongoError:E11000 重复键错误集合:tracker-db.users 索引:username_1 重复键:{用户名:null}”
【发布时间】:2023-03-25 20:56:02
【问题描述】:

之前回答了一堆类似的问题,但似乎没有一个能解决我的问题。添加第一个用户没有问题。但是,用户名不显示记录并在添加第二个用户时出错。

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema(
    {
        username: {
            type: String,
            unique: true,
            required: true,
            minlength: 3,
        },
        gender: String,
        age: Number
    },
    {
        timestamps: true
    }
);

const User = mongoose.model('user', userSchema);
module.exports = User;

The error that I'm getting

The record on adding first user

【问题讨论】:

  • 请检查您正在保存的user 文档是否有非空username。我认为在第一次和第二次用户名作为 null 传递给数据库。
  • 是的,这就是正在发生的事情,但我该如何改变呢?任何建议
  • 能否添加实际使用模型的代码来保存用户?看起来它没有使用required: true,如果它在没有用户名的情况下保存

标签: node.js mongoose backend


【解决方案1】:

在 Robo3T 中,我必须查找我的收藏索引,并手动删除用户名索引。

【讨论】:

    【解决方案2】:

    只需删除集合并再次发出请求。这应该可以正常工作。

    【讨论】:

      【解决方案3】:

      删除集合并在 mongodb 中重新创建集合对我有用

      【讨论】:

        【解决方案4】:

        在您的架构中添加用户名,我遇到了同样的问题,我这样做了

        function(accessToken, refreshToken, profile, cb) { 控制台.log(配置文件); User.findOrCreate({ username: profile.displayName, googleId: profile.id }, function (err, user) { 返回 cb(err, 用户); }); 我只是在我的 findorcreate 函数中添加了一个用户名,这样它就不会显示用户名 null

        【讨论】:

          【解决方案5】:

          试试这个,希望对你有帮助。

          在 MongoDB 服务器中创建一个新数据库并将数据保存在该新位置,对我有用 :-)

          【讨论】:

          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 2021-10-01
          • 2018-07-21
          • 2018-07-29
          • 2019-01-05
          • 2020-05-11
          • 2019-06-17
          • 2021-09-02
          • 2019-07-11
          • 2021-07-25
          相关资源
          最近更新 更多