简体   繁体   English

猫鼬填充的正确方法是什么?

[英]What is the proper way of mongoose populate?

Hello im new to nodejs and mongoose, i need help in mongoose populate, please help me to understand. 您好,我是nodejs和mongoose的新手,我需要猫鼬填充方面的帮助,请帮助我了解。 Thanks in Advance! 提前致谢! here is my schema's 这是我的架构

PropertySchema.js PropertySchema.js

const mongoose = require('mongoose')
const { Schema } = mongoose
require('./MemberSchema')

const propertySchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  pname: String,
  ptype: String,
  price: Number,
  owner: { type: mongoose.Schema.Types.ObjectId, ref: 'Members' }
})


const Props = mongoose.model('Property', propertySchema)

module.exports = Property

MemberSchema.js MemberSchema.js

const mongoose = require('mongoose')
const { Schema } = mongoose
require('./PropertySchema')

const memberSchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  fname: String,
  lname: String,
  dob: Number,
  email: String,
  address: String,
  phone: Number,
  memtype: String,
  username: {type: String, required: true},
  password: {type: String, required:true},
  properties: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Property' }]
})

const Members = mongoose.model('Members', memberSchema)

module.exports = Members

addPropertyRoutes.js addPropertyRoutes.js

router.post('/add', isAuthenticated, (req, res, next) => {
  const props = new Property({
    _id: new mongoose.Types.ObjectId(),
    pname: req.body.pname,
    ptype: req.body.ptype,
    price: req.body.price,
    owner: new mongoose.Types.ObjectId()
  })
  props.save( (err, props) => {
    if (err) {
      console.log('Unable to register your data: ' + err)
      throw err
    }
    console.log('Property Added Successful!')
    res.redirect('/property/add')
  })
})  

Im using mongoose 3.6 and expressjs. 我正在使用猫鼬3.6和expressjs。

When i check my Robo 3t after adding properties it shows like this check this screenshot: 当我添加属性后检查我的Robo 3t时,显示如下所示:

在此处输入图片说明

In your, property schema you have to store ownerId, not to generate new ObjectId. 在属性架构中,您必须存储ownerId,而不是生成新的ObjectId。 The proper way to do Populate in mongoose, you can find it here . 用猫鼬填充的正确方法,可以在这里找到。

i think the solution is this: 我认为解决方案是这样的:

change your addPropertyRoutes into this :) 将您的addPropertyRoutes更改为此:)

router.post('/add', isAuthenticated, (req, res, next) => {
      const member = req.user
      Members.findOne({})
      const props = new Property({
        pname: req.body.pname,
        ptype: req.body.ptype,
        price: req.body.price,
        owner: member._id
      })
      props.save( (err, props) => {
        if (err) {
          console.log('Unable to register your data: ' + err)
          throw err
        }
        console.log('Registration Successful!')
        res.redirect('/property/add')
      })
    })

Your Welcome from noobs 来自新手的欢迎

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM