使用Mongoose在MongoDB地图集中保存数据时出错

时间:2019-07-24 08:59:06

标签: node.js mongodb mongoose

我正在尝试使用node.js和mongoose将数据保存在MongoDB地图集中。

每次我使用MySchema.save()时,数据都在插入,但是我也遇到错误:

  

UnhandledPromiseRejectionWarning: MongoWriteConcernError: No write concern mode named 'majority;' found in replica set configuration

此外,没有重复的条目,数据也在插入,但我也遇到错误

let User = require('../models/users.models');

const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json('user added!'))
.catch(err => res.status(400).json('Error: ' + err));

用户模型

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

var userSchema = new Schema({
    username:  {
        type: String,
        required: true,
        unique: true,
        trim: true,
        minlength: 3
    },
  },
  {
    timestamps: true
  });

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

module.exports = User;

5 个答案:

答案 0 :(得分:1)

我知道这是2个月前问的,但对于那些会遇到相同问题的人。 您错误地在URI字符串末尾输入了错误的字符:
mongodb+srv://${ user }:${ password }@track-mkahl.mongodb.net/test?retryWrites=true&w=majority;
您需要删除单词;之后的majority

答案 1 :(得分:1)

对我来说,它也像@Yossi Saadi建议的那样在URI字符串中,只是我在其中写了majoritys而不是majority

答案 2 :(得分:0)

我认为这行有问题。

  

让User = require('../ models / users.models');

我为您创建了一个解决方案。

  

/models/user.js

const mongoose = require('mongoose')
const Schema = mongoose.Schema
mongoose.connect("mongodb://localhost/stack-overflow", { useNewUrlParser: true })

var userSchema = new Schema({
    username:  {
        type: String,
        required: true,
        unique: true,
        trim: true,
        minlength: 3
    },
  },
  {
    timestamps: true
  });

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

module.exports = User
  

/routes/userroute.js

const User = require("../models/user")
// Imagine run() as an asynchronous request handler
async function run() {
    try {
        const user1 = new User({ username: "lidafafnus" })
        user1.save((err,result) => {
            console.log(err, result)
        })
    } catch(error) {
        console.log(error)
    }
} 

run()

答案 3 :(得分:0)

这对我有帮助。

const schema = new Schema({ name: String }, {
  writeConcern: {
    w: 'majority',
    j: true,
    wtimeout: 1000
  }
});

https://mongoosejs.com/docs/guide.html#writeConcern

答案 4 :(得分:0)

"mongoURI" : "mongodb+srv://${ user }:${ password }@cluster0.mde0j.mongodb.net/cluster0?retryWrites=true&w=majority "

我在default.json中也遇到了同样的错误,它的简单错误只是删除了最后的&w=majority部分,它将得到解决