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

var*_*ati 9 mongoose mongodb node.js

我正在尝试使用 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));
Run Code Online (Sandbox Code Playgroud)

用户模型

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;
Run Code Online (Sandbox Code Playgroud)

小智 38

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

  • 我爱你在这里是我的一个吻 (4认同)
  • 复制粘贴者(包括我)就像......dammnnnnnn (2认同)

小智 5

这对我有帮助。

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

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


小智 5

"mongoURI" : "mongodb+srv://${ user }:${ password }@cluster0.mde0j.mongodb.net/cluster0?retryWrites=true&w=majority "
Run Code Online (Sandbox Code Playgroud)

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


小智 0

我认为这条线有问题。

让 User = require('../models/user.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
Run Code Online (Sandbox Code Playgroud)

/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()
Run Code Online (Sandbox Code Playgroud)