保存特定于用户模式但无法将其取回的项目 - 猫鼬

Saving an item that is specific to a user schema but not able to retrieve it back - mongoose


这是为特定用户保存药物的代码片段:

const {userId, medName, medDescription, dose, medType, date, time} = req.body;
  try {
    const newMed = new MedsSchema({
      userId,
      medName,
      medDescription,
      dose,
      medType,
      date,
      time,
    });
    await newMed.save().then(() => res.send({response: 'ok'}));

    const specificUser = await User.findById({_id: userId});
    specificUser.medicines.push(newMed);
    await specificUser.save().then(
      User.findOne(specificUser)
        .populate('medicines')
        .exec(function (err, docs) {
          if (err) return handleError(err);
          console.log(docs);
        }),
    );

这是用户架构:

const userSchema = new mongoose.Schema(
  {
    username: {
      type: String,
      required: true,
      unique: true,
    },
    password: {
      type: String,
      required: true,
    },
    phone: {
      type: Number,
      required: true,
    },
    email: {
      type: String,
      unique: true,
      required: true,
    },
    medicines: [{type: mongoose.Schema.Types.ObjectId, ref: 'MedsSchema'}],
  },
  {
    toJSON: {
      virtuals: true,
    },
  },
);
router.get('/getMeds/:Id', (req, res) => {
  console.log(req.params.Id);
  MedsSchema.find({userId: req.params.Id}, function (err, result) {
    if (err) {
      res.send(err);
    } else {
      res.send(result);
    }
  });
});

我要添加什么才能让我只为特定用户获得特定药物,而不是获得所有药物?

您能否将您的第一个代码片段编辑为

const { userId, medName, medDescription, dose, medType, date, time } = req.body;
try {
  const user = await User.findOone({ _id: userId });
  const newMed = await MedsSchema.create({
    userId: user,
    medName,
    medDescription,
    dose,
    medType,
    date,
    time,
  });

  const specificUser = await User.findByIdAndUpdate({ _id: userId }, { $push: { medecines: newMed } });
  return res.json({ newMed, specificUser })
};

在路由器中

router.get('/getMeds/:Id', async (req, res) => {
  console.log(req.params.Id);
  const user = await User.findOne({ _id: req.params.Id }).populate({ path: 'medicines' })
  console.log(user.medicines)
  return res.json({meds: user.medicines})
});

同时检查控制台结果以查看是否一切正常