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