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
项目结构: 项目的结构将如下所示
示例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