Closed ChoppinBlockParty closed 3 years ago
@ChoppinBlockParty I see the same thing on my end; it looks like maybe there are some defaults injected?
If you change the writeConcern object to a string, like so <<writeConcern: 'majority'>>, you no longer get the warning. I am guessing the object approach has a bug.
@dbronin Sorry, did not get it. How do i need covert the writeConcern
?
@ChoppinBlockParty I am not sure that you can if you need all 3 parameters. If you want to just specify the w, you can set writeConcern: 'majority'
it looks like this is related to a change on MongoClient
https://github.com/strongloop/loopback-connector-mongodb/issues/616
const mongoose = require('mongoose');
const UserSchema = mongoose.Schema({
email: { type: String, required: true },
firstName: { type: String, required: true },
lastName: { type: String, required: true }
},{autocreate:true});
const User = mongoose.model('User', UserSchema);
(async function() {
await mongoose.connect('mongodb://localhost:27017/test', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const user = await User.create({
email: 'bill@microsoft.com',
firstName: 'Bill',
lastName: 'Gates'
});
User.updateOne({firstName: 'Bill'},{firstName: 'Jill'},{upsert:true, writeConcern: {w:'majority', j:true, wtimeout:15000}}).exec();
console.log('Done', user.firstName);
})();
I set up the write concern like this
const MySchema = new Schema(
{
_id: { type: Number, required: true },
requestId: { type: Types.ObjectId, required: true },
op: { type: String, required: true },
size: { type: Number, required: true },
totalSize: { type: Number, required: true }
},
{
versionKey: false,
writeConcern: {
w: 'majority',
j: true,
wtimeout: 15000
}
}
)
I still continue to get the warning even with 5.12.3 (mongodb@3.6.5) version.
(node:468715) [MONGODB DRIVER] Warning: Top-level use of w, wtimeout, j, and fsync is deprecated. Use writeConcern instead.
at emitWarning (/home/yuki/prj/vir/node_modules/mongodb/lib/utils.js:844:17)
at Object.emitWarningOnce (/home/yuki/prj/vir/node_modules/mongodb/lib/utils.js:863:12)
at Function.fromOptions (/home/yuki/prj/vir/node_modules/mongodb/lib/write_concern.js:82:11)
at applyWriteConcern (/home/yuki/prj/vir/node_modules/mongodb/lib/utils.js:450:37)
at updateDocuments (/home/yuki/prj/vir/node_modules/mongodb/lib/operations/common_functions.js:339:18)
at UpdateOneOperation.execute (/home/yuki/prj/vir/node_modules/mongodb/lib/operations/update_one.js:31:5)
at /home/yuki/prj/vir/node_modules/mongodb/lib/operations/execute_operation.js:72:19
at maybePromise (/home/yuki/prj/vir/node_modules/mongodb/lib/utils.js:685:3)
at executeOperation (/home/yuki/prj/vir/node_modules/mongodb/lib/operations/execute_operation.js:34:10)
at Collection.updateOne (/home/yuki/prj/vir/node_modules/mongodb/lib/collection.js:763:10)
at NativeCollection.<computed> [as updateOne] (/home/yuki/prj/vir/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:218:28)
at NodeCollection.updateOne (/home/yuki/prj/vir/node_modules/mquery/lib/collection/node.js:82:19)
at model.Query._updateThunk (/home/yuki/prj/vir/node_modules/mongoose/lib/query.js:3829:23)
at model.Query.<anonymous> (/home/yuki/prj/vir/node_modules/mongoose/lib/query.js:3889:23)
at model.Query._wrappedThunk [as _updateOne] (/home/yuki/prj/vir/node_modules/mongoose/lib/helpers/query/wrapThunk.js:16:8)
at /home/yuki/prj/vir/node_modules/kareem/index.js:370:33
const mongoose = require('mongoose');
const {Schema} = mongoose;
const MySchema = new Schema(
{
_id: { type: Number, required: true },
op: { type: String, required: true },
size: { type: Number, required: true },
totalSize: { type: Number, required: true }
},
{
versionKey: false,
writeConcern: {
w: 'majority',
j: true,
wtimeout: 15000
}
}
)
const Test = mongoose.model('Test', MySchema);
async function test() {
await mongoose.connect('mongodb://localhost:27017/test', {
useNewUrlParser: true,
useUnifiedTopology: true
});
await mongoose.connection.dropDatabase();
const entry = await Test.create({_id: 123454677898, op: 'help', size: 54, totalSize: 104})
await entry.save();
}
test();
I am getting this error when
It does not seem like a top-level w, j, etc. and I am using writeConcern. What am I doing wrong?
Mongoose version: 5.11.18.