首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用关系从Mysql转换为Mongo/mongoose

使用关系从Mysql转换为Mongo/mongoose
EN

Stack Overflow用户
提问于 2019-09-13 17:05:26
回答 3查看 430关注 0票数 0

在一个新项目中,我从MySQL开始,但我想将其转换为mongodb / moongoose。

我在这里的痛苦在于我在MySQL中有不同的关系。

F.x。我有用户表

代码语言:javascript
运行
复制
uid | firstname | lastname | email

我可以住在

代码语言:javascript
运行
复制
hid | address | zipcode | city | ownerid

其中ownerid是users表中的用户

我有点不确定我应该如何在mongoose中设计我的模式,以便有一个有点像MySQL的选项。

我当前的用户模式是这样的

代码语言:javascript
运行
复制
const userSchema = new mongoose.Schema({
    firstname: String,
    lastname: String,
    email: String,
    phone: Number,
    password: String,
    address: String,
    zipcode: Number,
    city: String,
    bankname: String,
    bankregno: Number,
    bankaccno: Number,
    userconfirmed: Boolean,
    confirmtoken: String,
    resettoken: String,
    resettokenexpires: Date,
    acceptmarketing: Boolean,
    lastloggedin: Date,
    disabled: Boolean
})
EN

回答 3

Stack Overflow用户

发布于 2019-09-13 17:16:06

您可以为userSchema中的房屋数组添加一个字段,以将其拆分并允许一对多关系。您可以使用subdocuments来完成此操作。

这可能看起来像这样。

代码语言:javascript
运行
复制
const houseSchema = new mongoose.Schema({
    address: String,
    zipcode: Number,
    city: String,
})

const userSchema = new mongoose.Schema({
    firstname: String,
    lastname: String,
    email: String,
    phone: Number,
    password: String,
    bankname: String,
    bankregno: Number,
    bankaccno: Number,
    userconfirmed: Boolean,
    confirmtoken: String,
    resettoken: String,
    resettokenexpires: Date,
    acceptmarketing: Boolean,
    lastloggedin: Date,
    disabled: Boolean,
    houses: [houseSchema],
})
票数 0
EN

Stack Overflow用户

发布于 2019-09-13 17:16:35

您可以使用mongoose populate,如下所示

代码语言:javascript
运行
复制
const User = new mongoose.Schema({
    House: { type: mongoose.Types.Schema.ObjectId, ref: "House" }
});

const House = new mongoose.Schema({
    Number,
    Road: String
});

(async () => {
    const users = await User.find({}).populate("House");

    // users = [
    //     {
    //         _id: 373890hfjklfhjkfh,
    //         House: {
    //             _id: dhkdhdlhjkld,
    //             Number: 378930,
    //             Road: fhjdlhdjkld
    //         }
    //     }
    // ]
})();
票数 0
EN

Stack Overflow用户

发布于 2019-09-13 18:47:19

如果您希望将这两个模式关联起来,这可能会对您有所帮助。如果您想了解更多信息,请访问https://mongoosejs.com/docs/2.7.x/docs/populate.html

代码语言:javascript
运行
复制
const User = mongoose.model('User', new mongoose.Schema({
  firstname: {
  type: String,
 },
  lastname: {
    type: String,
 },
  email: {
    type: String
 }
}));

const Address = mongoose.model('Address', new mongoose.Schema({
  owner: {
    type: Schema.Types.ObjectId,
    ref: 'User'
   }
   //rest of your address schema
}))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57920512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档