4

私はこのマングーススキーマを持っています。

var mongoose = require ('mongoose')
  , dev      = require ('../db').dev ();

var schema = new mongoose.Schema ({
  date: {
    type: Date,
    default: Date.now
  },
  company: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Company'
  },
  questionnaire: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Questionnaire'
  }
});

module.exports = dev.model ('Survey', schema);

特定の企業 ID を持つ調査のみを検索したい。それ、どうやったら出来るの?私は(Expressハンドラで)試しました:

app.get ('/survey', function (req, res) {
  Survey.find ({ company: req.query.company }).populate ('questionnaire').exec (function (err, surveys) {
    return res.json (surveys);
  });
});
4

3 に答える 3

8

あなたの最新のコメントcompanyでは、コレクションのフィールドSurveysは実際には文字列であり、ObjectId ではないため、これが機能していないと述べています。スキーマ定義companyは ObjectId として宣言されているため、Mongoose は値を ObjectId にキャストし、プロパティが同じ値を持つ ObjectId であるreq.query.companyドキュメントをクエリします。したがって、がデータベース内の文字列である場合、一致しません。Surveyscompanycompany

companyの値Surveysを文字列ではなく ObjectIds に更新すると、これが機能します。

于 2012-09-28T19:05:58.957 に答える
1

やってみました'company._id

app.get ('/survey', function (req, res) {
  Survey.find ({ 'company._id': req.query.company }).populate ('questionnaire').exec (function (err, surveys) {
    return res.json (surveys);
  });
});
于 2012-09-25T17:54:13.180 に答える