【问题标题】:Mongoose/Express population issue猫鼬/快递人口问题
【发布时间】:2021-04-12 04:43:20
【问题描述】:

这是我的架构:

1.记录架构:

const mongoose = require('mongoose')
const RecordsSchema = new mongoose.Schema({
    Title: { type: String, required: true },
    postedby: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'user'
    }],
    Author: { type: String, required: true },
    ISBN: { type: String, required: true },
    Review: { type: String },
    SelectedFile: { type: String },
    Likes: { type: Number, default: 0 },
    Date: { type: Date, default: Date.now() }
});
module.exports = Records = mongoose.model('record', RecordsSchema, 'record');

这是用户架构:

const mongoose = require('mongoose')
const userSchema = new mongoose.Schema({
    username: { type: String },
    email: { type: String, required: true, unique: true },
    records: [{
        type: [mongoose.Schema.Types.ObjectId],
        ref: 'record'
    }],
    password: { type: String, required: true },
    Date: { type: Date, default: Date.now(), immutable: true }
});
module.exports = User = mongoose.model('user', userSchema, 'user');

获取记录的快捷途径:

router.get('/postedby/', (req, res) => {
    Records.findOne()
        .populate('postedby')
        .exec()
        .then(post => {
            if (!post) {
                return res.status(400).json({ msg: 'Add Posts' });
            }
            else return res.json(post);
        }).catch(err => console.error(err))
});

路线结果:

{
    "postedby": [],
    "Likes": 0,
    "_id": "5fed8c12a4fb2c1e98ef09f6",
    "Title": "New Age",
    "Author": "Situma Prisco",
    "ISBN": "23422",
    "SelectedFile": "",
    "Review": "",
    "Date": "2020-12-31T08:30:10.321Z",
    "__v": 0
},

我在填充的用户字段(posteddby) 上得到一个空白数组。 请帮忙,我做错了什么?是的,我确实有一个用户登录

【问题讨论】:

  • 使用“Records.findByID()”你得到同样的结果吗?

标签: node.js mongoose mongoose-schema mern mongoose-populate


【解决方案1】:

我实现了你的代码和架构,它对我有用,如果你在数据库中正确存储数据,一切都会好起来的......

注意:

如果postby key的数据没有再次显示,请使用find({})而不是findOne(),其他问题需要解决,如猫鼬版本和...,因为您的代码和架构是正确的

find({}) 对我来说是结果:

[
    {
        "postedby": [
            {
                "records": [
                    "5ff6bc0bd9e7437184b83f76",
                    "5ff6bc23d9e7437184b83f78",
                    "5ff6bc85f1045a4f102bc0cd",
                    "5ff6bca1f1045a4f102bc0ce",
                    "5ff6bca5f1045a4f102bc0cf",
                    "5ff6bcb3f1045a4f102bc0d0",
                    "5ff6bcc7f1045a4f102bc0d1"
                ],
                "_id": "5ff6b81df463322abc7406ec",
                "Date": "2021-01-07T07:28:15.654Z",
                "email": "a@test.com",
                "password": "$2a$12$wJVDysQxbjuRve.hYn/lbO0rskhwj6y8lwDuEWpCwHeNT/V2mybs.",
                "__v": 7
            }
        ],
        "Likes": 1,
        "Date": "2021-01-07T07:47:11.610Z",
        "_id": "5ff6bca1f1045a4f102bc0ce",
        "Title": "farsi",
        "Author": "javid1",
        "ISBN": "1",
        "Review": "1",
        "SelectedFile": "1",
        "__v": 0
    },
    {
        "postedby": [
            {
                "records": [
                    "5ff6bc0bd9e7437184b83f76",
                    "5ff6bc23d9e7437184b83f78",
                    "5ff6bc85f1045a4f102bc0cd",
                    "5ff6bca1f1045a4f102bc0ce",
                    "5ff6bca5f1045a4f102bc0cf",
                    "5ff6bcb3f1045a4f102bc0d0",
                    "5ff6bcc7f1045a4f102bc0d1"
                ],
                "_id": "5ff6b81df463322abc7406ec",
                "Date": "2021-01-07T07:28:15.654Z",
                "email": "a@test.com",
                "password": "$2a$12$wJVDysQxbjuRve.hYn/lbO0rskhwj6y8lwDuEWpCwHeNT/V2mybs.",
                "__v": 7
            }
        ],
        "Likes": 1,
        "Date": "2021-01-07T07:47:11.610Z",
        "_id": "5ff6bca5f1045a4f102bc0cf",
        "Title": "farsi",
        "Author": "javid1",
        "ISBN": "1",
        "Review": "1",
        "SelectedFile": "1",
        "__v": 0
    },
    {
        "postedby": [
            {
                "records": [
                    "5ff6bc0bd9e7437184b83f76",
                    "5ff6bc23d9e7437184b83f78",
                    "5ff6bc85f1045a4f102bc0cd",
                    "5ff6bca1f1045a4f102bc0ce",
                    "5ff6bca5f1045a4f102bc0cf",
                    "5ff6bcb3f1045a4f102bc0d0",
                    "5ff6bcc7f1045a4f102bc0d1"
                ],
                "_id": "5ff6b81df463322abc7406ec",
                "Date": "2021-01-07T07:28:15.654Z",
                "email": "a@test.com",
                "password": "$2a$12$wJVDysQxbjuRve.hYn/lbO0rskhwj6y8lwDuEWpCwHeNT/V2mybs.",
                "__v": 7
            }
        ],
        "Likes": 1,
        "Date": "2021-01-07T07:47:11.610Z",
        "_id": "5ff6bcb3f1045a4f102bc0d0",
        "Title": "riyazi",
        "Author": "javid1",
        "ISBN": "1",
        "Review": "1",
        "SelectedFile": "1",
        "__v": 0
    },
    {
        "postedby": [
            {
                "records": [
                    "5ff6bc0bd9e7437184b83f76",
                    "5ff6bc23d9e7437184b83f78",
                    "5ff6bc85f1045a4f102bc0cd",
                    "5ff6bca1f1045a4f102bc0ce",
                    "5ff6bca5f1045a4f102bc0cf",
                    "5ff6bcb3f1045a4f102bc0d0",
                    "5ff6bcc7f1045a4f102bc0d1"
                ],
                "_id": "5ff6b81df463322abc7406ec",
                "Date": "2021-01-07T07:28:15.654Z",
                "email": "a@test.com",
                "password": "$2a$12$wJVDysQxbjuRve.hYn/lbO0rskhwj6y8lwDuEWpCwHeNT/V2mybs.",
                "__v": 7
            }
        ],
        "Likes": 1,
        "Date": "2021-01-07T07:47:11.610Z",
        "_id": "5ff6bcc7f1045a4f102bc0d1",
        "Title": "zaban",
        "Author": "javid1",
        "ISBN": "1",
        "Review": "1",
        "SelectedFile": "1",
        "__v": 0
    },
    {
        "postedby": [
            {
                "records": [
                    "5ff6c275964d062f045e93d3",
                    "5ff6c283964d062f045e93d5"
                ],
                "_id": "5ff6c253964d062f045e93d2",
                "Date": "2021-01-07T08:01:21.499Z",
                "email": "b@test.com",
                "password": "$2a$12$jmHUrTSPwjaVd0VEIpsGauExHNSukHRyWWiJt4UlEgeWLBo8GPDH.",
                "__v": 2
            }
        ],
        "Likes": 1,
        "Date": "2021-01-07T08:01:21.990Z",
        "_id": "5ff6c275964d062f045e93d3",
        "Title": "zaban",
        "Author": "javid1",
        "ISBN": "1",
        "Review": "1",
        "SelectedFile": "1",
        "__v": 0
    },
    {
        "postedby": [
            {
                "records": [
                    "5ff6c275964d062f045e93d3",
                    "5ff6c283964d062f045e93d5"
                ],
                "_id": "5ff6c253964d062f045e93d2",
                "Date": "2021-01-07T08:01:21.499Z",
                "email": "b@test.com",
                "password": "$2a$12$jmHUrTSPwjaVd0VEIpsGauExHNSukHRyWWiJt4UlEgeWLBo8GPDH.",
                "__v": 2
            }
        ],
        "Likes": 1,
        "Date": "2021-01-07T08:01:21.990Z",
        "_id": "5ff6c283964d062f045e93d5",
        "Title": "tttt",
        "Author": "javid1",
        "ISBN": "1",
        "Review": "1",
        "SelectedFile": "1",
        "__v": 0
    }
]

【讨论】:

  • 它不会改变结果。
  • 我实现了你的代码和模式,对我有用,数据是否正确存储在数据库中?
  • Mohammad,非常感谢您抽出宝贵时间对此做出回应。但是,我仍然得到空白数组....还有什么我可能不看的?
  • 我认为您必须重置数据库,删除所有集合并再次存储数据后,由猫鼬的 populate() 管理的关系将起作用。
猜你喜欢
  • 2021-04-11
  • 2020-10-23
  • 2019-10-27
  • 2011-08-28
  • 1970-01-01
  • 2017-11-19
  • 2015-05-14
  • 2018-04-24
  • 1970-01-01
相关资源
最近更新 更多