當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Mongoose SchemaType.prototype.ref()用法及代碼示例


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



相關用法


注:本文由純淨天空篩選整理自kartikmukati大神的英文原創作品 Mongoose SchemaType.prototype.ref() API。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。