Mongoose findOne()对一个特定的对象属性查询返回NULL

dpiehjr4  于 2022-10-22  发布在  Go
关注(0)|答案(1)|浏览(190)

我正在尝试使用Mongoose的findOne()属性在MongoDB集合中搜索文档。模式如下:

用户地址的模式

const AddressSchema = new Schema({
  houseNumber: { 
    type: String, 
    required: true },
  street: { 
    type: String, 
    required: true },
  barangay: { 
    type: String, 
    required: true },
  city: { 
    type: String, 
    required: true },
  province: { 
    type: String, 
    required: true },
  zipCode: { 
    type: Number, 
    required: true },
})

用户集合

const UserSchema = new Schema({
  patientID: {
    type: String,
    required: true,
    unique: true
  },
  username: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  firstName: {
    type: String,
    required: true
  },
  lastName: {
    type: String,
    required: true
  },
  sex: {
    type: String,
    required: true
  },
  birthdate: {
    type: Date,
    required: true
  },
  bloodType: {
    type: String,
    required: true
  },
  address: {
    type: AddressSchema,
    required: true
  }
})

和处理查询的代码:

static async fetchUserFiles(req, res, next) {
    console.log(req.params.id);
    const userData = await User.findOne({ patientID: req.params.id});
}

以下是URL,如果这会有帮助的话:

router.route("/user/files/:id")
  .get(checkIfAuthenticated, FileHandler.fetchUserFiles)

问题是,当我尝试按用户名搜索用户时,就像await User.findOne({username: 'johnsmith'})一样,它工作得很好。但是,当执行上述代码时,该函数返回null。我已经检查了我是否给出了正确的查询类型,但仍然给出了null。经过观察,我还尝试搜索其他文档字段,如firstNamelastName,工作正常。只有当我尝试按patientID搜索时,它才抛出NULL。
如有线索,敬请垂青!

tjvv9vkg

tjvv9vkg1#

您可以检查PatientID是否属于OBJECTID类型,以及您尝试搜索的值是否也属于OBJECTID类型。有时演员阵容会引起一些问题

相关问题