如何使用 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 可以在一个统一的形式中看到,而不是分散在不同用户的数据库中。 是否可以这样做,因为目前“数据”字段中没有显示任何数据

您可以使用 userSchemadataSchema 之间的关系,如下所示:

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');