Mongoose SchemaType.prototype.ref()函数

Mongoose SchemaType.prototype.ref()函数

Mongoose API 中的 MongooseSchemaType.ref() 方法用于根据对象ID在两个基于模式的模式之间建立关系。我们可以使用模态名称、模态类、返回模态名称的函数和返回模态类的函数来设置模态的引用。我们可以在模式的对象上访问 ref() 方法。

语法:

MongooseSchemaType.ref()

参数: MongooseSchemaType.ref() 方法接受一个参数,即模型名称或模型类:

  • ref: 它指的是模型的名称、模型类或返回模型名称或模型类的函数。

返回值: MongooseSchemaType.ref() 函数返回一个 SchemaType 的引用。

设置 Node.js 应用程序:

步骤1: 使用以下命令创建一个 Node.js 应用程序:

npm init

步骤2: 创建NodeJS应用程序后,使用以下命令安装所需模块:

npm install mongoose

项目结构: 项目的结构将如下所示

Mongoose SchemaType.prototype.ref()函数

示例1: 在这个示例中,我们使用mongoose建立了一个数据库连接,并定义了两个模型。首先是userSchema,有两个列或字段“name”和“age”,其次是studentSchema,有三个列或字段“rollNumber”、“address”和“user”。最后,我们使用 ref() 将User Modal引用到Student Modal。我们将“User”模态引用设置在Student Modal或Student Schema的“user”字段上。

app.js: 在app.js文件中写下以下代码:

// 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文件中编写下面的代码:

// 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程