乐闻世界logo
搜索文章和话题

How to nest objects in one schema with Mongoose?

6 个月前提问
5 个月前修改
浏览次数28

1个答案

1

在Mongoose中,嵌套对象是通过在一个Schema中定义另一个对象的结构来实现的。这可以通过直接在父Schema中定义对象的字段,或者通过创建一个独立的Schema并将其作为子文档嵌入到父Schema中来完成。下面我将通过两种方法来举例说明如何在Mongoose中嵌套对象。

方法1:直接在父Schema中定义对象

这种方法是直接在父Schema中定义一个对象结构。这种方式适合于较简单的嵌套结构,其中嵌套对象不需要复用。

javascript
const mongoose = require('mongoose'); const { Schema } = mongoose; const userSchema = new Schema({ name: String, age: Number, address: { street: String, city: String, zipCode: Number } }); const User = mongoose.model('User', userSchema); // 使用模型创建一个新用户 const newUser = new User({ name: '张三', age: 30, address: { street: '中山路', city: '北京', zipCode: 100000 } }); newUser.save() .then(doc => console.log('新用户保存成功:', doc)) .catch(err => console.error('保存时发生错误:', err));

方法2:使用子Schema

如果嵌套对象较为复杂或者需要在多个地方复用,可以创建一个独立的Schema,然后在父Schema中引用它。这样可以提高代码的可维护性和复用性。

javascript
const mongoose = require('mongoose'); const { Schema } = mongoose; // 创建地址的独立Schema const addressSchema = new Schema({ street: String, city: String, zipCode: Number }); // 在用户Schema中引用地址Schema const userSchema = new Schema({ name: String, age: Number, address: addressSchema }); const User = mongoose.model('User', userSchema); // 使用模型创建一个新用户 const newUser = new User({ name: '李四', age: 25, address: { street: '长安街', city: '上海', zipCode: 200000 } }); newUser.save() .then(doc => console.log('新用户保存成功:', doc)) .catch(err => console.error('保存时发生错误:', err));

通过上述两种方法,您可以在Mongoose中实现对象的嵌套。选择哪种方法取决于具体需求,比如嵌套对象的复杂性和是否需要在多个模型中复用该结构。

2024年6月29日 12:07 回复

你的答案