Mongoose
Mongoose()
Mongoose.prototype.Aggregate()
Mongoose.prototype.CastError()
Mongoose.prototype.Collection()
Mongoose.prototype.Connection()
Mongoose.prototype.ConnectionStates
Mongoose.prototype.Date
Mongoose.prototype.Decimal128
Mongoose.prototype.Document()
Mongoose.prototype.DocumentProvider()
Mongoose.prototype.Error()
Mongoose.prototype.Mixed
Mongoose.prototype.Model()
Mongoose.prototype.Mongoose()
Mongoose.prototype.Number
Mongoose.prototype.ObjectId
Mongoose.prototype.Query()
Mongoose.prototype.STATES
Mongoose.prototype.Schema()
Mongoose.prototype.SchemaType()
Mongoose.prototype.SchemaTypeOptions()
Mongoose.prototype.SchemaTypes
Mongoose.prototype.Types
Mongoose.prototype.VirtualType()
Mongoose.prototype.connect()
Mongoose.prototype.connection
Mongoose.prototype.connections
Mongoose.prototype.createConnection()
Mongoose.prototype.deleteModel()
Mongoose.prototype.disconnect()
Mongoose.prototype.driver
Mongoose.prototype.get()
Mongoose.prototype.isObjectIdOrHexString()
Mongoose.prototype.isValidObjectId()
Mongoose.prototype.model()
Mongoose.prototype.modelNames()
Mongoose.prototype.mquery
Mongoose.prototype.now()
Mongoose.prototype.omitUndefined()
Mongoose.prototype.overwriteMiddlewareResult()
Mongoose.prototype.plugin()
Mongoose.prototype.pluralize()
Mongoose.prototype.sanitizeFilter()
Mongoose.prototype.set()
Mongoose.prototype.setDriver()
Mongoose.prototype.skipMiddlewareFunction()
Mongoose.prototype.startSession()
Mongoose.prototype.syncIndexes()
Mongoose.prototype.trusted()
Mongoose.prototype.version
Mongoose()
參數
options
«Object» 請參閱Mongoose#set()
文件
Mongoose 建構函式。
mongoose
模組的 exports 物件是此類別的實例。大多數應用程式只會使用這一個實例。
範例
const mongoose = require('mongoose');
mongoose instanceof mongoose.Mongoose; // true
// Create a new Mongoose instance with its own `connect()`, `set()`, `model()`, etc.
const m = new mongoose.Mongoose();
Mongoose.prototype.Aggregate()
Mongoose Aggregate 建構函式
Mongoose.prototype.CastError()
參數
type
«String» 類型的名稱value
«Any» 無法轉換的值path
«String» 此轉換錯誤發生的文件中的路徑a.b.c
[reason]
«Error» 拋出的原始錯誤
Mongoose CastError 建構函式
Mongoose.prototype.Collection()
Mongoose Collection 建構函式
Mongoose.prototype.Connection()
Mongoose Connection 建構函式
Mongoose.prototype.ConnectionStates
類型
- «property»
為使用者層級公開連線狀態
Mongoose.prototype.Date
類型
- «property»
Mongoose Date SchemaType。
範例
const schema = new Schema({ test: Date });
schema.path('test') instanceof mongoose.Date; // true
Mongoose.prototype.Decimal128
類型
- «property»
Mongoose Decimal128 SchemaType。用於在結構描述中宣告應為 128 位元十進位浮點數的路徑。請勿使用此項來建立新的 Decimal128 實例,請改用 mongoose.Types.Decimal128
。
範例
const vehicleSchema = new Schema({ fuelLevel: mongoose.Decimal128 });
Mongoose.prototype.Document()
Mongoose Document 建構函式。
Mongoose.prototype.DocumentProvider()
Mongoose DocumentProvider 建構函式。Mongoose 使用者不應直接使用此項
Mongoose.prototype.Error()
MongooseError 建構函式。
Mongoose.prototype.Mixed
類型
- «property»
Mongoose Mixed SchemaType。用於在結構描述中宣告 Mongoose 的變更追蹤、轉換和驗證應忽略的路徑。
範例
const schema = new Schema({ arbitrary: mongoose.Mixed });
Mongoose.prototype.Model()
Mongoose Model 建構函式。
Mongoose.prototype.Mongoose()
Mongoose 建構函式
mongoose 模組的 exports 是此類別的實例。
範例
const mongoose = require('mongoose');
const mongoose2 = new mongoose.Mongoose();
Mongoose.prototype.Number
類型
- «property»
Mongoose Number SchemaType。用於在結構描述中宣告 Mongoose 應轉換為數字的路徑。
範例
const schema = new Schema({ num: mongoose.Number });
// Equivalent to:
const schema = new Schema({ num: 'number' });
Mongoose.prototype.ObjectId
類型
- «property»
Mongoose ObjectId SchemaType。用於在結構描述中宣告應為 MongoDB ObjectIds 的路徑。請勿使用此項來建立新的 ObjectId 實例,請改用 mongoose.Types.ObjectId
。
範例
const childSchema = new Schema({ parentId: mongoose.ObjectId });
Mongoose.prototype.Query()
Mongoose Query 建構函式。
Mongoose.prototype.STATES
類型
- «property»
為使用者層級公開連線狀態
Mongoose.prototype.Schema()
Mongoose Schema 建構函式
範例
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const CatSchema = new Schema(..);
Mongoose.prototype.SchemaType()
Mongoose SchemaType 建構函式
Mongoose.prototype.SchemaTypeOptions()
用於結構描述類型選項的建構函式
Mongoose.prototype.SchemaTypes
類型
- «property»
請參閱
Mongoose.prototype.Types
類型
- «property»
各種 Mongoose 類型。
範例
const mongoose = require('mongoose');
const array = mongoose.Types.Array;
類型
使用此公開存取 ObjectId
類型,我們可以按需建構 ID。
const ObjectId = mongoose.Types.ObjectId;
const id1 = new ObjectId;
Mongoose.prototype.VirtualType()
Mongoose VirtualType 建構函式
Mongoose.prototype.connect()
參數
uri
«String» 要連線的 mongodb URI[options]
«Object» 傳遞給 MongoDB 驅動程式的connect()
函式,但以下說明的 4 個 Mongoose 特定選項除外。[options.bufferCommands=true]
«Boolean» Mongoose 特定選項。設定為 false 以停用與此連線相關聯的所有模型上的緩衝。[options.bufferTimeoutMS=10000]
«Number» Mongoose 特定選項。如果bufferCommands
為 true,如果操作仍被緩衝,Mongoose 將在bufferTimeoutMS
後拋出錯誤。[options.dbName]
«String» 我們想要使用的資料庫名稱。如果未提供,則使用連線字串中的資料庫名稱。[options.user]
«String» 用於驗證的使用者名稱,相當於options.auth.user
。為了向後相容性而維護。[options.pass]
«String» 用於驗證的密碼,相當於options.auth.password
。為了向後相容性而維護。[options.maxPoolSize=100]
«Number» MongoDB 驅動程式將為此連線保持開啟的最大通訊端數目。請記住,MongoDB 一次只允許每個通訊端執行一個操作,因此如果您發現有一些較慢的查詢會阻止較快的查詢繼續,您可能需要增加此值。請參閱 MongoDB 和 Node.js 中的慢速列車。[options.minPoolSize=0]
«Number» MongoDB 驅動程式將為此連線保持開啟的最小通訊端數目。[options.serverSelectionTimeoutMS]
«Number» 如果useUnifiedTopology = true
,MongoDB 驅動程式會嘗試尋找要傳送任何指定操作的伺服器,並在錯誤發生前持續重試serverSelectionTimeoutMS
毫秒。如果未設定,MongoDB 驅動程式預設會使用30000
(30 秒)。[options.heartbeatFrequencyMS]
«Number» 如果useUnifiedTopology = true
,MongoDB 驅動程式會每隔heartbeatFrequencyMS
傳送一次心跳訊號,以檢查連線的狀態。心跳訊號會受限於serverSelectionTimeoutMS
,因此 MongoDB 驅動程式預設會重試失敗的心跳訊號最多 30 秒。Mongoose 只會在心跳訊號失敗後才發出'disconnected'
事件,因此您可能會想要減少此設定,以減少伺服器關閉與 Mongoose 發出'disconnected'
之間的時間。我們建議您不要將此設定設為低於 1000,過多的心跳訊號可能會導致效能降低。[options.autoIndex=true]
«Boolean» Mongoose 特定選項。設定為 false 以停用與此連線相關聯的所有模型的自動索引建立。[options.promiseLibrary]
«Class» 設定 底層驅動程式的 Promise 程式庫。[options.socketTimeoutMS=0]
«Number» MongoDB 驅動程式在初始連線後,會等待多久才因閒置而終止通訊端。通訊端可能會因為沒有活動或長時間執行的操作而處於閒置狀態。socketTimeoutMS
預設為 0,表示 Node.js 不會因閒置而使通訊端逾時。成功完成 MongoDB 驅動程式之後,此選項會傳遞至 Node.jssocket#setTimeout()
函式。[options.family=0]
«Number» 透明地傳遞至 Node.js 的dns.lookup()
函式。可以是0
、4
或6
。4
表示僅使用 IPv4,6
表示僅使用 IPv6,0
表示同時嘗試兩者。[options.autoCreate=false]
«Boolean» 設定為true
以使 Mongoose 在此連線上建立的每個模型上自動呼叫createCollection()
。[callback]
«Function»
傳回
- «Promise» 如果連線成功,則解析為
this
請參閱
開啟預設的 Mongoose 連線。
範例
mongoose.connect('mongodb://user:pass@127.0.0.1:port/database');
// replica sets
const uri = 'mongodb://user:pass@127.0.0.1:port,anotherhost:port,yetanother:port/mydatabase';
mongoose.connect(uri);
// with options
mongoose.connect(uri, options);
// Using `await` throws "MongooseServerSelectionError: Server selection timed out after 30000 ms"
// if Mongoose can't connect.
const uri = 'mongodb://nonexistent.domain:27000';
await mongoose.connect(uri);
Mongoose.prototype.connection
類型
- «Connection»
Mongoose 模組的預設連線。相當於 mongoose.connections[0]
,請參閱 connections
。
範例
const mongoose = require('mongoose');
mongoose.connect(...);
mongoose.connection.on('error', cb);
這是預設用於使用 mongoose.model 建立的每個模型的連線。
若要建立新的連線,請使用 createConnection()
。
Mongoose.prototype.connections
類型
- «Array»
包含與此 Mongoose 實例相關聯的所有 連線 的陣列。預設情況下,有 1 個連線。呼叫 createConnection()
會將連線新增至此陣列。
範例
const mongoose = require('mongoose');
mongoose.connections.length; // 1, just the default connection
mongoose.connections[0] === mongoose.connection; // true
mongoose.createConnection('mongodb://127.0.0.1:27017/test');
mongoose.connections.length; // 2
Mongoose.prototype.createConnection()
參數
uri
«String» 要連線的 mongodb URI[options]
«Object» 傳遞給 MongoDB 驅動程式的connect()
函式,但以下說明的 4 個 Mongoose 特定選項除外。[options.bufferCommands=true]
«Boolean» Mongoose 特定選項。設定為 false 以停用與此連線相關聯的所有模型上的緩衝。[options.dbName]
«String» 您想要使用的資料庫名稱。如果未提供,Mongoose 會使用連線字串中的資料庫名稱。[options.user]
«String» 用於驗證的使用者名稱,相當於options.auth.user
。為了向後相容性而維護。[options.pass]
«String» 用於驗證的密碼,相當於options.auth.password
。為了向後相容性而維護。[options.autoIndex=true]
«Boolean» Mongoose 特定選項。設定為 false 以停用與此連線相關聯的所有模型的自動索引建立。[options.promiseLibrary]
«Class» 設定 底層驅動程式的 Promise 程式庫。[options.maxPoolSize=5]
«Number» MongoDB 驅動程式將為此連線保持開啟的最大通訊端數目。請記住,MongoDB 一次只允許每個通訊端執行一個操作,因此如果您發現有一些較慢的查詢會阻止較快的查詢繼續,您可能需要增加此值。請參閱 MongoDB 和 Node.js 中的慢速列車。[options.minPoolSize=1]
«Number» MongoDB 驅動程式將為此連線保持開啟的最小通訊端數目。請記住,MongoDB 一次只允許每個通訊端執行一個操作,因此如果您發現有一些較慢的查詢會阻止較快的查詢繼續,您可能需要增加此值。請參閱 MongoDB 和 Node.js 中的慢速列車。[options.socketTimeoutMS=0]
«Number» MongoDB 驅動程式在初始連線後,會等待多久才因閒置而終止通訊端。預設為 0,表示 Node.js 不會因閒置而使通訊端逾時。通訊端可能會因為沒有活動或長時間執行的操作而處於閒置狀態。成功完成 MongoDB 驅動程式之後,此選項會傳遞至 Node.jssocket#setTimeout()
函式。[options.family=0]
«Number» 透明地傳遞至 Node.js 的dns.lookup()
函式。可以是0
、4
或6
。4
表示僅使用 IPv4,6
表示僅使用 IPv6,0
表示同時嘗試兩者。
傳回
- «Connection» 建立的 Connection 物件。連線不可 thenable,因此您無法執行
await mongoose.createConnection()
。若要等待,請改用mongoose.createConnection(uri).asPromise()
。
建立 Connection 實例。
每個 connection
實例都會對應到單一資料庫。此方法在管理多個資料庫連線時很有用。
傳遞的選項會優先於連線字串中包含的選項。
範例
// with mongodb:// URI
db = mongoose.createConnection('mongodb://user:pass@127.0.0.1:port/database');
// and options
const opts = { db: { native_parser: true }}
db = mongoose.createConnection('mongodb://user:pass@127.0.0.1:port/database', opts);
// replica sets
db = mongoose.createConnection('mongodb://user:pass@127.0.0.1:port,anotherhost:port,yetanother:port/database');
// and options
const opts = { replset: { strategy: 'ping', rs_name: 'testSet' }}
db = mongoose.createConnection('mongodb://user:pass@127.0.0.1:port,anotherhost:port,yetanother:port/database', opts);
// initialize now, connect later
db = mongoose.createConnection();
await db.openUri('mongodb://127.0.0.1:27017/database');
Mongoose.prototype.deleteModel()
參數
name
«String|RegExp» 如果是字串,則是要移除的模型名稱。如果是正規表示式,則會移除所有名稱符合該正規表示式的模型。
傳回
- «Mongoose» this
從預設連線中移除名為 name
的模型(如果存在)。您可以使用此函式來清除您在測試中建立的任何模型,以防止 OverwriteModelErrors。
等同於 mongoose.connection.deleteModel(name)
。
範例
mongoose.model('User', new Schema({ name: String }));
console.log(mongoose.model('User')); // Model object
mongoose.deleteModel('User');
console.log(mongoose.model('User')); // undefined
// Usually useful in a Mocha `afterEach()` hook
afterEach(function() {
mongoose.deleteModel(/.+/); // Delete every model
});
Mongoose.prototype.disconnect()
傳回
- «Promise» 當所有連線關閉時解析,或以發生的第一個錯誤拒絕。
並行在所有連線上執行 .close()
。
Mongoose.prototype.driver
~已過時~類型
- «property»
具有 get()
和 set()
的物件,包含此 Mongoose 實例用來與資料庫通訊的基礎驅動程式。驅動程式是一個 Mongoose 特有的介面,定義了諸如 find()
等函式。
Mongoose.prototype.get()
參數
key
«String»
Mongoose.prototype.isObjectIdOrHexString()
參數
v
«Any»
如果給定的值是 Mongoose ObjectId(使用 instanceof
)或是給定的值是 24 個字元的十六進位字串(這是 ObjectId 最常用的字串表示法),則傳回 true。
此函式類似於 isValidObjectId()
,但更嚴格,因為 isValidObjectId()
會為 Mongoose 可以轉換為 ObjectId 的任何值傳回 true
。這包括 Mongoose 文件、任何長度為 12 的字串以及任何數字。isObjectIdOrHexString()
僅對 ObjectId
實例或 24 個字元的十六進位字串傳回 true,並且會為數字、文件和長度為 12 的字串傳回 false。
範例
mongoose.isObjectIdOrHexString(new mongoose.Types.ObjectId()); // true
mongoose.isObjectIdOrHexString('62261a65d66c6be0a63c051f'); // true
mongoose.isObjectIdOrHexString('0123456789ab'); // false
mongoose.isObjectIdOrHexString(6); // false
mongoose.isObjectIdOrHexString(new User({ name: 'test' })); // false
mongoose.isObjectIdOrHexString({ test: 42 }); // false
Mongoose.prototype.isValidObjectId()
參數
v
«Any»
如果 Mongoose 可以將給定的值轉換為 ObjectId,則傳回 true,否則傳回 false。
範例
mongoose.isValidObjectId(new mongoose.Types.ObjectId()); // true
mongoose.isValidObjectId('0123456789ab'); // true
mongoose.isValidObjectId(6); // true
mongoose.isValidObjectId(new User({ name: 'test' })); // true
mongoose.isValidObjectId({ test: 42 }); // false
Mongoose.prototype.model()
參數
name
«String|Function» 模型名稱或擴展 Model 的類別[schema]
«Schema» 要使用的綱要。[collection]
«String» 名稱 (可選,從模型名稱推斷)[options]
«Object»[options.overwriteModels=false]
«Boolean» 如果為 true,則覆寫具有相同名稱的現有模型,以避免OverwriteModelError
傳回
- «Model» 與
name
相關聯的模型。如果模型不存在,Mongoose 將建立該模型。
定義模型或檢索模型。
在 mongoose
實例上定義的模型,對由同一 mongoose
實例建立的所有連線都可用。
如果您使用相同的名稱但不同的綱要呼叫 mongoose.model()
兩次,則會收到 OverwriteModelError
。如果您使用相同的名稱和相同的綱要呼叫 mongoose.model()
,則會取回相同的綱要。
範例
const mongoose = require('mongoose');
// define an Actor model with this mongoose instance
const schema = new Schema({ name: String });
mongoose.model('Actor', schema);
// create a new connection
const conn = mongoose.createConnection(..);
// create Actor model
const Actor = conn.model('Actor', schema);
conn.model('Actor') === Actor; // true
conn.model('Actor', schema) === Actor; // true, same schema
conn.model('Actor', schema, 'actors') === Actor; // true, same schema and collection name
// This throws an `OverwriteModelError` because the schema is different.
conn.model('Actor', new Schema({ name: String }));
當沒有傳遞 collection
引數時,Mongoose 使用模型名稱。如果您不喜歡此行為,可以傳遞集合名稱、使用 mongoose.pluralize()
或設定綱要的集合名稱選項。
範例
const schema = new Schema({ name: String }, { collection: 'actor' });
// or
schema.set('collection', 'actor');
// or
const collectionName = 'actor';
const M = mongoose.model('Actor', schema, collectionName);
Mongoose.prototype.modelNames()
傳回
- «Array»
Mongoose.prototype.mquery
類型
- «property»
Mongoose 使用的 mquery 查詢產生器。
Mongoose.prototype.now()
Mongoose.prototype.omitUndefined()
參數
[val]
«Object» 要從中移除未定義鍵的物件
接收一個物件,並從該物件中刪除值與 undefined
嚴格相等的任何鍵。此函式對於查詢篩選很有用,因為 Mongoose 將 TestModel.find({ name: undefined })
視為 TestModel.find({ name: null })
。
範例
const filter = { name: 'John', age: undefined, status: 'active' };
mongoose.omitUndefined(filter); // { name: 'John', status: 'active' }
filter; // { name: 'John', status: 'active' }
await UserModel.findOne(mongoose.omitUndefined(filter));
Mongoose.prototype.overwriteMiddlewareResult()
參數
result
«any»
在 post()
中介軟體中使用此函式來取代結果
範例
schema.post('find', function(res) {
// Normally you have to modify `res` in place. But with
// `overwriteMiddlewarResult()`, you can make `find()` return a
// completely different value.
return mongoose.overwriteMiddlewareResult(res.filter(doc => !doc.isDeleted));
});
Mongoose.prototype.plugin()
參數
fn
«Function» 外掛程式回呼[opts]
«Object» 可選的選項
傳回
- «Mongoose» this
請參閱
宣告在所有綱要上執行的全域外掛程式。
等同於在您建立的每個綱要上呼叫 .plugin(fn)
。
Mongoose.prototype.pluralize()
參數
[fn]
«Function|null» 覆寫用於將集合名稱轉換為複數的函式
傳回
- «Function,null» 用於將集合名稱轉換為複數的目前函式,預設為
mongoose-legacy-pluralize
中的舊版函式。
用於將集合名稱轉換為複數的函式的 getter/setter。
Mongoose.prototype.sanitizeFilter()
參數
filter
«Object»
透過將任何具有以 $
開頭的屬性的巢狀物件包裝在 $eq
中,以對抗 查詢選擇器注入攻擊來清理查詢篩選器。
const obj = { username: 'val', pwd: { $ne: null } };
sanitizeFilter(obj);
obj; // { username: 'val', pwd: { $eq: { $ne: null } } });
Mongoose.prototype.set()
參數
key
«String|Object» 選項的名稱或多個鍵值對的物件value
«String|Function|Boolean» 選項的值,如果「key」是物件則未使用
設定 mongoose 選項
key
可以用作物件來一次設定多個選項。如果一個選項拋出錯誤,則仍然會評估其他選項。
範例
mongoose.set('test', value) // sets the 'test' option to `value`
mongoose.set('debug', true) // enable logging collection methods + arguments to the console/file
mongoose.set('debug', function(collectionName, methodName, ...methodArgs) {}); // use custom function to log collection methods + arguments
mongoose.set({ debug: true, autoIndex: false }); // set multiple options at once
目前支援的選項有
allowDiskUse
:設定為true
以將allowDiskUse
設定為 true,預設用於所有彙總操作。applyPluginsToChildSchemas
:預設為true
。設定為 false 可跳過將全域外掛程式套用至子綱要applyPluginsToDiscriminators
:預設為false
。設定為 true 可將全域外掛程式套用至辨別器綱要。通常不需要這樣做,因為外掛程式會套用至基本綱要,而辨別器會從基本綱要複製所有中介軟體、方法、靜態和屬性。autoCreate
:設定為true
可讓 Mongoose 在您使用mongoose.model()
或conn.model()
建立模型時自動呼叫Model.createCollection()
。這對於測試交易、變更串流和其他需要集合存在的功能很有用。autoIndex
:預設為true
。設定為 false 可停用與此 Mongoose 實例相關聯的所有模型的自動索引建立。bufferCommands
:啟用/停用所有連線和模型的 mongoose 緩衝機制bufferTimeoutMS
:如果 bufferCommands 開啟,此選項會設定 Mongoose 緩衝在拋出錯誤之前將等待的最長時間。如果未指定,Mongoose 將使用 10000(10 秒)。cloneSchemas
:預設為false
。設定為true
可在編譯為模型之前clone()
所有綱要。debug
:如果為true
,則將 mongoose 發送給 MongoDB 的操作列印到主控台。如果傳遞了可寫入串流,則會記錄到該串流,而沒有色彩化。如果傳遞了回呼函式,它將接收集合名稱、方法名稱,然後接收傳遞給該方法的所有引數。例如,如果您想要複製預設記錄,則可以從回呼輸出Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})
。id
:如果為true
,則會將id
虛擬新增至所有綱要,除非在每個綱要的基礎上覆寫。timestamps.createdAt.immutable
:預設為true
。如果為false
,則會將createdAt
欄位變更為immutable: false
,這表示您可以更新createdAt
maxTimeMS
:如果設定,則會將 maxTimeMS 附加到每個查詢objectIdGetter
:預設為true
。Mongoose 會將一個名為_id
的 getter 新增至 MongoDB ObjectId,為了方便使用 populate,會傳回this
。將此設定為 false 可移除 getter。overwriteModels
:設定為true
可預設為覆寫呼叫mongoose.model()
時具有相同名稱的模型,而不是拋出OverwriteModelError
。returnOriginal
:如果為false
,則會將預設的returnOriginal
選項變更為findOneAndUpdate()
、findByIdAndUpdate
和findOneAndReplace()
為 false。這等同於預設將findOneAndX()
呼叫的new
選項設定為true
。如需詳細資訊,請閱讀我們的findOneAndUpdate()
教學。runValidators
:預設為false
。設定為 true 可預設為所有驗證器啟用更新驗證器。sanitizeFilter
:預設為false
。設定為 true 可啟用查詢篩選器的清理,以對抗查詢選擇器注入攻擊,方法是將任何具有以$
開頭的屬性的巢狀物件包裝在$eq
中。selectPopulatedPaths
:預設為true
。設定為 false 可選擇退出 Mongoose 將您populate()
的所有欄位新增至您的select()
。綱要層級選項selectPopulatedPaths
會覆寫此選項。strict
:預設為true
,可以是false
、true
或'throw'
。設定綱要的預設嚴格模式。strictQuery
:預設為false
。可以是false
、true
或'throw'
。設定綱要的預設 strictQuery 模式。toJSON
:預設為{ transform: true, flattenDecimals: true }
。覆寫預設物件為toJSON()
,以決定 Mongoose 文件如何由JSON.stringify()
序列化toObject
:預設為{ transform: true, flattenDecimals: true }
。覆寫預設物件為toObject()
Mongoose.prototype.setDriver()
覆寫此 Mongoose 實例使用的目前驅動程式。驅動程式是一個 Mongoose 特有的介面,定義了諸如 find()
等函式。
Mongoose.prototype.skipMiddlewareFunction()
參數
result
«any»
在 pre()
中介軟體中使用此函式,以跳過呼叫封裝函式。
範例
schema.pre('save', function() {
// Will skip executing `save()`, but will execute post hooks as if
// `save()` had executed with the result `{ matchedCount: 0 }`
return mongoose.skipMiddlewareFunction({ matchedCount: 0 });
});
Mongoose.prototype.startSession()
參數
[options]
«Object» 請參閱 mongodb 驅動程式選項[options.causalConsistency=true]
«Boolean» 設定為 false 可停用因果一致性[callback]
«Function»
傳回
- «Promise<ClientSession>» 解析為 MongoDB 驅動程式
ClientSession
的 Promise
需要 MongoDB >= 3.6.0。 啟動一個 MongoDB 會話,以獲得諸如因果一致性、可重試寫入和 交易等好處。
調用 mongoose.startSession()
等同於調用 mongoose.connection.startSession()
。會話的作用域限定在一個連接上,因此調用 mongoose.startSession()
會在預設的 mongoose 連接上啟動一個會話。
Mongoose.prototype.syncIndexes()
參數
options
«Object»options.continueOnError
«Boolean» 預設為false
。如果設定為true
,則當某個模型的同步失敗時,mongoose 不會拋出錯誤,並且會返回一個物件,其中鍵是模型的名稱,值是每個模型的結果/錯誤。
傳回
- «Promise» 返回一個 Promise,當 Promise 解析時,該值是被刪除的索引列表。
同步此連接註冊的所有模型的索引。
Mongoose.prototype.trusted()
參數
obj
«Object»
告知 sanitizeFilter()
在過濾潛在的 查詢選擇器注入攻擊時,跳過給定的物件。當您有已知的查詢選擇器想要使用時,請使用此方法。
const obj = { username: 'val', pwd: trusted({ $type: 'string', $eq: 'my secret' }) };
sanitizeFilter(obj);
// Note that `sanitizeFilter()` did not add `$eq` around `$type`.
obj; // { username: 'val', pwd: { $type: 'string', $eq: 'my secret' } });
Mongoose.prototype.version
類型
- «property»