Skip to content
Advertisement

How do I refer to a nested object in .find method?

I’m writing app in node.js. In the Order model I have a “userData” object that has an “email” element. How do I refer to “email” when using the find method?

order model:

const orderSchema = new Schema({
    userData: { // <--- email is in the userData
        firstname: String,
        email: String // <--- I want this
    },
    items: {}
});
module.exports = mongoose.model('order', orderSchema, 'orders');

use of the order:

router.put('/user-orders', (req, res) => {
  const data = req.body;

  Order.find({ userData.email: data.email }, (error, order) => { // <--- it doesn't work
    if (error) {
      console.log(error);
    } else {
      return res.json({ order });
    }
  })
})

Advertisement

Answer

router.put('/user-orders', (req, res) => {
  const data = req.body;

  Order.find({ "userData.email": data.email }, (error, order) => { // <--- it doesn't work
    if (error) {
      console.log(error);
    } else {
      return res.json({ order });
    }
  })
})

You are missing some quotes for the keys. It needs to be “userData.email”.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement