-
There are many issues like #11048 regarding What we noticed in out project after migrating to mongoose 6 is that
What is wrong with this schema definition and mongoose setup order?.. Single (setup first, schema second)single-module-postdeclare.mjs import mongoose from 'mongoose';
run().catch(console.error);
async function run() {
try {
mongoose.set('debug', true);
mongoose.set('strictQuery', false);
await mongoose.connect('mongodb://localhost:27017/test');
const userSchema = new mongoose.Schema({ name: String });
const User = mongoose.model('User', userSchema);
await User.create({ name: 'foo' });
const user = await User.findOne({ wrongField: 'bar' })
// .setOptions({ strictQuery: false });
console.log('user found: ', user != null);
} finally {
await mongoose.disconnect();
}
}
Single (schema first, setup second)single-module-predeclare.mjs import mongoose from 'mongoose';
run().catch(console.error);
async function run() {
try {
const userSchema = new mongoose.Schema({ name: String });
const User = mongoose.model('User', userSchema);
mongoose.set('debug', true);
mongoose.set('strictQuery', false);
await mongoose.connect('mongodb://localhost:27017/test');
await User.create({ name: 'foo' });
const user = await User.findOne({ wrongField: 'bar' })
// .setOptions({ strictQuery: false });
console.log('user found: ', user != null);
} finally {
await mongoose.disconnect();
}
}
Splitsplit-modules.js import mongoose from 'mongoose';
import User from './User.mjs';
run().catch(console.error);
async function run() {
try {
mongoose.set('debug', true);
mongoose.set('strictQuery', false);
await mongoose.connect('mongodb://localhost:27017/test');
await User.create({ name: 'foo' });
const user = await User.findOne({ wrongField: 'bar' })
// .setOptions({ strictQuery: false });
console.log('user found: ', user != null);
} finally {
await mongoose.disconnect();
}
} User.mjs import mongoose from 'mongoose';
const userSchema = new mongoose.Schema({ name: String });
const User = mongoose.model('User', userSchema);
export default User;
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 3 replies
-
I'd say this is by design. Put |
Beta Was this translation helpful? Give feedback.
-
Thanks, @vkarpov15! The following code structure seem to put things in the correct order and all the desired global mongoose options are honored by the model:
index.js: import { db } from './db.js';
import User from './User.js';
run().catch(console.error);
async function run() {
try {
await db.connect();
const user = await User.findOne({ wrongField: 'bar' })
} finally {
await db.disconnect();
}
} db.js: import mongoose from 'mongoose';
mongoose.set('debug', true);
mongoose.set('strictQuery', false);
mongoose.set('autoCreate', false);
mongoose.set('autoIndex', false);
export const db = {
connect: () => mongoose.connect('mongodb://localhost:27017/test'),
disconnect: () => mongoose.disconnect()
}; User.js: import mongoose from 'mongoose';
const userSchema = new mongoose.Schema({ name: String });
const User = mongoose.model('User', userSchema);
export default User; |
Beta Was this translation helpful? Give feedback.
Thanks, @vkarpov15!
The following code structure seem to put things in the correct order and all the desired global mongoose options are honored by the model:
index.js:
db.js: