mongoose MongoError:E11000重复键错误集合:tracker-db.用户索引:用户名_1重复密钥:{用户名:空}”

wz1wpwve  于 2023-03-03  发布在  Go
关注(0)|答案(6)|浏览(112)

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

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

6kkfgxo0

6kkfgxo01#

只需删除集合,然后再次请求,这样就可以了。

sqserrrh

sqserrrh2#

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

hmae6n7t

hmae6n7t3#

添加一个用户名到你的模式,我有同样的问题,我这样做了
函数(访问令牌,刷新令牌,配置文件,cb){ console.log(配置文件);用户.findOrCreate({用户名:个人资料。显示名称,谷歌ID:profile.id},函数(错误,用户){返回cb(错误,用户);});我只是在findorcreate函数中添加了一个用户名,这样就不会显示用户名为空

yshpjwxd

yshpjwxd4#

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

rvpgvaaj

rvpgvaaj5#

试试这个,我希望它会有帮助。
在MongoDB服务器中创建一个新的数据库,并将数据保存在那个新位置,对我很有效:-)

hc2pp10m

hc2pp10m6#

问题不在您在此介绍的模块中。
我们需要从您的.js文件中查看您的代码,假设您正在使用expressbody-parser来完成所有这些工作。我认为,我对您的应用程序进行了一点测试,我可以告诉您使用POSTMAN的REQ POST是不正确的。为什么?因为您正在将POST REQ发送到

http://localhost:3000/users/add

   and you are setting PARAMS with username: randomguy
   and that's why you're getting that error from MongoDB 
   {username: null}.

要在POSTMAN中解决此问题,您必须将PARAMS留空(删除所有键/值字段),并改为发出POST请求,在BODY字段中包含键/值:

username: randomGuy

在我的例子中,我使用的body-parser如下:

app.use(bodyParser.urlencoded({ extended: true }));

并在POSTMAN的BODY中选择单选按钮x-www-form-urlencoded
/* 参数用于GET请求 */
POSTMAN POST REQ TO local MongoDB with BODY KEY/VALUE

相关问题