如何使用 Mongoose 在 MongoDB 中创建互连模式?
How to create interconnected schemas in MongoDB with Mongoose?
我正在为用户创建一个网络应用程序来存储他们的日常开支。该应用程序在 NodeJS 中并使用 Express。收集用户和用户数据的架构如下:
const dataSchema = new mongoose.Schema({
email:String,
date:String,
amount: Number
})
const userSchema = new mongoose.Schema({
email: String,
password: String,
data: {dataSchema}
})
const User = new mongoose.model("User", userSchema);
const UserData = new mongoose.model("UserData", dataSchema);
我想做的是将 dataSchema
连接到 userSchema
。
我希望为每个用户的每个不同的日子创建一个新的 dataSchema
。我希望连接这些模式,以便 userData
可以在一个统一的形式中看到,而不是分散在不同用户的数据库中。
是否可以这样做,因为目前“数据”字段中没有显示任何数据
您可以使用 userSchema
和 dataSchema
之间的关系,如下所示:
const Schema = mongoose.Schema;
const userSchema = new Schema({
email: String,
password: String,
data: {
type: Schema.Types.ObjectId,
ref: "UserData",
},
})
从那里你可以使用很多操作,比如填充。我建议你阅读 here 官方文档,但这里有一个概述:
如何创建和连接:
// create a userData
const userData = new UserData({email: "data@data.com", date: "some date", amount : 3});
// create a user and make connection
const user = new User({email: "me@you.he", password : "me", data: userData._id})
如何查询用户的数据:
const user = await User.findOne({ email: 'me@you.he' }).populate('userData');
我正在为用户创建一个网络应用程序来存储他们的日常开支。该应用程序在 NodeJS 中并使用 Express。收集用户和用户数据的架构如下:
const dataSchema = new mongoose.Schema({
email:String,
date:String,
amount: Number
})
const userSchema = new mongoose.Schema({
email: String,
password: String,
data: {dataSchema}
})
const User = new mongoose.model("User", userSchema);
const UserData = new mongoose.model("UserData", dataSchema);
我想做的是将 dataSchema
连接到 userSchema
。
我希望为每个用户的每个不同的日子创建一个新的 dataSchema
。我希望连接这些模式,以便 userData
可以在一个统一的形式中看到,而不是分散在不同用户的数据库中。
是否可以这样做,因为目前“数据”字段中没有显示任何数据
您可以使用 userSchema
和 dataSchema
之间的关系,如下所示:
const Schema = mongoose.Schema;
const userSchema = new Schema({
email: String,
password: String,
data: {
type: Schema.Types.ObjectId,
ref: "UserData",
},
})
从那里你可以使用很多操作,比如填充。我建议你阅读 here 官方文档,但这里有一个概述:
如何创建和连接:
// create a userData
const userData = new UserData({email: "data@data.com", date: "some date", amount : 3});
// create a user and make connection
const user = new User({email: "me@you.he", password : "me", data: userData._id})
如何查询用户的数据:
const user = await User.findOne({ email: 'me@you.he' }).populate('userData');