当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。