Mongoose API 的 MongooseSchemaType.ref() 方法用於基於對象 ID 建立兩個 Schema 之間的關係。我們可以使用模態名稱、模態類、返回模態名稱的函數和返回模態類的函數來設置模態的引用。我們可以訪問架構對象上的ref()方法。
用法:
MongooseSchemaType.ref()
參數:MongooseSchemaType.ref() 方法接受一個參數,即模態名稱或模態類:
- ref: 它指模態、模態類或返回模態名稱或模態類的函數的名稱。
返回值:MongooseSchemaType.ref() 函數返回 SchemaType 的引用。
設置 Node.js 應用程序:
步驟 1:使用以下命令創建 Node.js 應用程序:
npm init
步驟 2:創建 NodeJS 應用程序後,使用以下命令安裝所需的模塊:
npm install mongoose
項目結構:項目結構如下所示
示例 1:在此示例中,我們使用 mongoose 建立了數據庫連接並定義了兩個模型。首先,userSchema 具有兩列或字段 “name” 和 “age”;其次,studentSchema 具有三列或字段,包括 ref “rollNumber”、“address” 和 “user”。最後,我們使用的是ref()將用戶模式引用到學生模式。我們正在學生模態或學生模式的 “user” 字段上設置 “User” 模態引用。
app.js:在 app.js 文件中寫下以下代碼:
Javascript
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
mongoose.connect("mongodb://localhost:27017/geeksforgeeks", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const userSchema = new mongoose.Schema({
name: String,
age: Number,
});
// Defining userSchema model
const User = mongoose.model("User", userSchema);
const studentSchema = new mongoose.Schema({
rollNumber: Number,
Address: String,
user: mongoose.SchemaTypes.ObjectId
})
// Defining studentSchema model
const Student = mongoose.model("Student", studentSchema);
// Setting modal name as String
studentSchema.path('user').ref('User');
console.log(studentSchema.paths.user)
運行程序的步驟:要運行應用程序,請從項目的根目錄執行以下命令:
node app.js
輸出:
ObjectId { path: 'user', instance: 'ObjectID', validators: [], getters: [], setters: [], _presplitPath: [ 'user' ], options: SchemaObjectIdOptions { type: [Function: ObjectId] { schemaName: 'ObjectId', defaultOptions: {}, get: [Function (anonymous)], set: [Function: set], _checkRequired: [Function (anonymous)], _cast: [Function: castObjectId], cast: [Function: cast], _defaultCaster: [Function (anonymous)], checkRequired: [Function (anonymous)] }, ref: 'User' }, _index: null, [Symbol(mongoose#schemaType)]: true }
示例 2:在此示例中,我們在創建學生模式時設置參考模式。我們可以通過將studentSchema 中的“user” 字段指定為“type” 和“ref” 鍵的對象來實現此目的。
app.js:在app.js文件中寫下以下代碼:
Javascript
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
mongoose.connect("mongodb://localhost:27017/geeksforgeeks",
{
useNewUrlParser: true,
useUnifiedTopology: true,
});
const userSchema = new mongoose.Schema({
name: String,
age: Number,
});
// Defining userSchema model
const User = mongoose.model("User", userSchema);
// Defining ref while creating student Schema
const studentSchema = new mongoose.Schema(
{
rollNumber: Number,
Address: String,
user: { type: mongoose.SchemaTypes.ObjectId, ref: User }
})
// Defining studentSchema model
const Student = mongoose.model("Student", studentSchema);
// Setting modal name as String
studentSchema.path('user').ref('User');
console.log(studentSchema.paths.user)
運行程序的步驟:要運行應用程序,請從項目的根目錄執行以下命令:
node app.js
輸出:
ObjectId { path: 'user', instance: 'ObjectID', validators: [], getters: [], setters: [], _presplitPath: [ 'user' ], options: SchemaObjectIdOptions { type: [Function: ObjectId] { schemaName: 'ObjectId', defaultOptions: {}, get: [Function (anonymous)], set: [Function: set], _checkRequired: [Function (anonymous)], _cast: [Function: castObjectId], cast: [Function: cast], _defaultCaster: [Function (anonymous)], checkRequired: [Function (anonymous)] }, ref: 'User' }, _index: null, [Symbol(mongoose#schemaType)]: true }
參考:https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-ref
相關用法
- Mongoose SchemaType.prototype.required()用法及代碼示例
- Mongoose SchemaType.prototype.default()用法及代碼示例
- Mongoose SchemaType.prototype.immutable()用法及代碼示例
- Mongoose SchemaType.prototype.unique()用法及代碼示例
- Mongoose SchemaType.prototype.validate()用法及代碼示例
- Mongoose SchemaType.prototype.get()用法及代碼示例
- Mongoose SchemaType.prototype.text()用法及代碼示例
- Mongoose SchemaType.prototype.set()用法及代碼示例
- Mongoose SchemaType.prototype.select()用法及代碼示例
- Mongoose SchemaType.prototype.transform()用法及代碼示例
- Mongoose SchemaType.prototype.index()用法及代碼示例
- Mongoose Schema Connection.prototype.asPromise()用法及代碼示例
- Mongoose Schema Connection.prototype.dropCollection()用法及代碼示例
- Mongoose Schema.prototype.virtual()用法及代碼示例
- Mongoose Schema Connection.prototype.set()用法及代碼示例
- Mongoose Schema Connection.prototype.dropDatabase()用法及代碼示例
- Mongoose Schema.prototype.plugin()用法及代碼示例
- Mongoose Schema Connection.prototype.close()用法及代碼示例
- Mongoose Schema.prototype.static()用法及代碼示例
- Mongoose Schema Connection.prototype.useDb()用法及代碼示例
- Mongoose Schema.prototype.pre()用法及代碼示例
- Mongoose countDocuments()用法及代碼示例
- Mongoose deleteMany()用法及代碼示例
- Mongoose deleteOne()用法及代碼示例
- Mongoose estimatedDocumentCount()用法及代碼示例
注:本文由純淨天空篩選整理自kartikmukati大神的英文原創作品 Mongoose SchemaType.prototype.ref() API。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。