请问前辈们这样的连表要怎么操作

发布于 2022-09-11 23:59:28 字数 695 浏览 9 评论 0

//文章
let articalSchema = new mongoose.Schema({
    title: String,
    author: {
        type:mongoose.Schema.Types.ObjectId,
        ref:'user'
    },
    tag:[{
        tid:{
            type:mongoose.Schema.Types.ObjectId,
            ref:'tag'
        }
    }],
    status:Boolean,
    comment:[{
        cid:{
            type:mongoose.Schema.Types.ObjectId,
            ref:'comment'
        }
    }]
})

let commentSchema = new mongoose.Schema({
    comment:String,
    from_uid:{
        type:mongoose.Schema.Types.ObjectId,
        ref:'user'
    }
})

let userSchema = new mongoose.Schema({
    name:String
})

能一次性的把文章下面的comment里的from_uid关联的user表的内容查出来吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖树树初阳… 2022-09-18 23:59:28

populate,下面是示例代码

const mongoose = require('mongoose');
(async function () {
  mongoose.connect('mongodb://localhost/test', { useUnifiedTopology: true, useNewUrlParser: true })
  const Artical = mongoose.model('Artical', new mongoose.Schema({
    title: String,
    comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }]
  }), 'test_artical')
  const Comment = mongoose.model('Comment', new mongoose.Schema({
    content: String,
    user: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
  }), 'test_ comment')
  const User = mongoose.model('User', new mongoose.Schema({
    username: String,
  }), 'test_user')
  await Artical.deleteMany({})
  await Comment.deleteMany({})
  await User.deleteMany({})
  // 填充测试数据
  const user = await new User({ username: '嘎嘎' }).save()
  const artical = await new Artical({ title: '钢铁是这样练成的' }).save()
  const comment = await new Comment({ content: '十五字十五字十五字十五字十五字', user }).save()
  artical.comments.push(comment)
  await artical.save()
  // 查询
  console.log(JSON.stringify(
    await Artical.find({}).populate({ path: 'comments', populate: { path: 'user' } })
  ))
  mongoose.disconnect()
}()).catch(err => {
  console.error(err)
  mongoose.disconnect()
})

输出结果:

[
  {
    "comments": [
      {
        "user": [
          {
            "_id": "5deda9fcfec029546434bfbf",
            "username": "嘎嘎",
            "__v": 0
          }
        ],
        "_id": "5deda9fcfec029546434bfc1",
        "content": "十五字十五字十五字十五字十五字",
        "__v": 0
      }
    ],
    "_id": "5deda9fcfec029546434bfc0",
    "title": "钢铁是这样练成的",
    "__v": 1
  }
]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文