mongoose.findOne返回null

时间:2019-06-20 14:20:44

标签: node.js mongodb express mongoose mongoose-populate

我已经创建了快递路线,以便将患者数据输入mongodb并从数据库中获取数据。预期结果是获得患者资料作为回报。由于我无法看到Patient_profile,因此get路线中存在一些错误。请帮忙。

// @ route  GET api/patient/:patientId
// @ desc   Get patient by patientId
// @ access Private

router.get('/:patientId', auth, async (req, res) => {
    try {
      const patient_profile = await Patient.findOne({

        patient: req.params.patientId

      }).populate('patient',['name','phonenumber']);
      //console.log(patient);
      console.log(patient_profile);
      if (!patient_profile) return res.status(400).json({ msg: 'Patient not found' });

      res.json(patient_profile);    
    } catch (err) {
      console.error(err.message);
      if (err.kind == 'ObjectId') {
        return res.status(400).json({ msg: 'Profile not found' });
      }
      res.status(500).send('Server Error');
    }
  });

module.exports=router;
const mongoose= require('mongoose');
autoIncrement = require('mongoose-auto-increment');
const config =require('config');
const db=config.get('mongoURI');

var connection = mongoose.createConnection(db);

autoIncrement.initialize(connection);

const PatientSchema = new mongoose.Schema({
    name:{
        type:String,
        required: true
    },
    phonenumber:{
        type:Number,
        required:true
    },
    date: {
        type: Date,
        default: Date.now
    },
    slider_1:{
        type:Number,
        required: true
    },
    slider_2:{
        type:Number,
        required:true
    },
    slider_3:{
        type:Number,
        required:true
    }

});
PatientSchema.plugin(autoIncrement.plugin, {
  model:'Patient',
   field:'patientId',
   startAt:1,
   incrementBy:1
});

module.exports=Patient=mongoose.model('patient',PatientSchema,'patient');

1 个答案:

答案 0 :(得分:1)

您要基于patient而不是patientId(这是您指定为自动递增的字段)进行查询。

将查询修改为:

const patient_profile = await Patient.findOne({

  patientId: req.params.patientId

}).populate('patient',['name','phonenumber']);

我希望这可以解决您的问题。