2

2 つの Mongoose スキーマがあります。

var EmployeeSchema = new Schema({
    name: String,
    servicesProvided: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Service'
    }]
});

var ServiceSchema = new Schema({
    name: String
});

http リクエストに送信するサービス ID を使用して、指定されたサービスを提供する従業員を見つけようとしています。これは私のコードです:

Employee
  .find({
    servicesProvided: req.params.service_id
  })
  .exec(function(err, employees) {
    if (err) {
      console.log(err);
      res.send(err);
    } else {
      res.json(employees);
    }
});

問題は、このコードが空の配列を返すことです。その理由はわかりません。サービスIDをmongoose.Schema.Types.ObjectIdにキャストするなど、多くのことを試しましたが、うまくいきません。

何か案が?Mongoose 3.8.39 を使用しています。ありがとう!

4

2 に答える 2

3

では、配列です。そのフィールドで従業員をフィルタリングするには、演算子を使用する必要がありEmployeeSchemaます。servicesProvided$in

var services = [req.params.service_id];
Employee.find({
  servicesProvided: {
    $in: services
  }
}, ...
于 2016-04-07T16:36:44.103 に答える