Để thêm query vào mongoose model chúng ta phải thông qua objet Schema#query.
//File query.helper.js import mongoose from 'mongoose'; // connect to MongoDB mongoose.connect('mongodb://localhost/gettingstarted', { useNewUrlParser: true }); const UserSchema = mongoose.Schema({ name: String }); UserSchema.query.byName = function (name) { return this.where({ name: new RegExp(name, 'i') }); };
Thực nghiệm
//File query.helper.js // more code var UserModel = mongoose.model('User', UserSchema); const insertUser = async (name) => { await new UserModel({name}).save(); } const queryHelper = async () => { await insertUser("hga"); await insertUser("hgi"); await insertUser("rds"); UserModel.find().byName('h').exec(function (err, users) { console.log("find:", users); }); UserModel.findOne().byName('rds').exec(function (err, user) { console.log("findOne:", user); }); } queryHelper();
Run
- MacOS: ./node_modules/.bin/babel-node ./query.helper.js
- Windows: .\node_modules\.bin\babel-node .\query.helper.js
Output
find: [ { _id: 5dd147e9a0e0a915e8746659, name: ‘hga’, __v: 0 },
{ _id: 5dd147e9a0e0a915e874665a, name: ‘hgi’, __v: 0 } ]
findOne: { _id: 5dd147e9a0e0a915e874665b, name: ‘rds’, __v: 0 }
Các bạn có thể download sourcecode đầy đủ để kiểm tra kết quả.