Node.js MongoError:E11000重复密钥错误集合:tracker-db.users索引:username_1 dup密钥:{username:null}";

Node.js MongoError:E11000重复密钥错误集合:tracker-db.users索引:username_1 dup密钥:{username:null}";,node.js,mongoose,backend,Node.js,Mongoose,Backend,以前回答过很多类似的问题,但似乎没有一个能解决我的问题。添加第一个用户没有问题。但是,用户名不显示记录,并且在添加第二个用户时出错 const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema( { username: { type: String, unique: true,

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

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;


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

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

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

在Robo3T中,我必须查找集合索引,然后手动删除用户名索引。

将用户名添加到您的架构中,我遇到了相同的问题,我做到了这一点

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

将用户名添加到您的模式中,我遇到了同样的问题,我做到了这一点

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

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

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

请检查
用户文档有一个非空的
用户名
。我认为在第一次和第二次将用户名作为空值传递到数据库中。是的,这就是发生的情况,但我如何更改它?有什么建议吗?您可以添加实际使用模型来保存用户的代码吗?看起来它没有使用
必需:true
,如果保存时没有用户名,请检查您正在保存的
用户
文档是否有非空的
用户名
。我想在第一次和第二次保存时,用户名会作为空值传递给数据库。是的,这就是发生的情况,但我如何更改它?有什么建议吗?您可以添加实际存在的代码吗使用模型保存用户?如果模型保存时没有用户名,则它似乎没有使用
必需:true