【问题标题】:Error: key $conditionalHandlers must not start with '$' mongodb错误:键 $conditionalHandlers 不能以 '$' mongodb 开头
【发布时间】:2013-11-07 18:04:01
【问题描述】:

我对 mongodb 有疑问,尤其是 node.js 的 mongoose 包。我有以下架构:

var Schema = mongoose.Schema;

var location = new Schema ({
  nomville: {type: String, required: true},
  description: {type: String, required: true},
  quartier: [quartier],
  critere: [misc],
  modified: {type: Date, default: Date.now}
});

var misc = new Schema ({
  publictransp: {type: Number},
  culture: {type: Number},
  traffic: {type: Number},
  nature: {type: Number},
  supermarket: {type: Number},
  school: {type: Number},
  sport: {type: Number},
  nightlife: {type: Number},
  mean: {type: Number}
});

var rue = new Schema ({
  nomrue: {type: String},
  modified: {type: Date, default: Date.now}
});

var quartier = new Schema ({
  nomquartier: {type: String},
  listerue: [rue],
  modified: {type: Date, default: Date.now}
})

var ObjModel = mongoose.model('Obj',location);

当我尝试使用 Jquery 查询发布此架构的对象时,我得到了这个:

[错误:键$conditionalHandlers不能以'$'开头]

有什么想法吗?我完全被这个卡住了。

EDIT1:这是发布功能:

//CREATE PRODUCTS
app.post('/api/products', function(req,res){
  var product;
  console.log("POST: ");
  console.log(req.body);
  product = new ObjModel({
    nomville: req.body.nomville,
    description: req.body.description,
    quartier: [quartier],
    critere: [misc],
  });
  product.save(function(err){
    if (!err) {
      return console.log("created");
    } else {
   return console.log(err);
    }
  });
  return res.send(product);
});

EDIT2:这是查询

 jQuery.post("/api/products", {
  "nomville": "Strasbourg",
  "description": "Ville de Strasbourg",
  "quartier": [
    {
      "nomquartier": "Centre",
      "listerue": [
          {
            "nomrue": "22 Novembre"
          },
          {
            "nomrue": "Abattoir"
          },
          {
            "nomrue": "Fonderie"
          },
          {
            "nomrue": "Francs Bourgeois"
          }
      ]
    },
    {
      "nomquartier": "Cité de l'Ill",
      "listerue": [
          {
            "nomrue": "Anguille (chemin de l)"
          },
          {
            "nomrue": "Civelles (promenade des)"
          },
          {
            "nomrue": "Hechner (rue)"
          },
          {
            "nomrue": "Phario (pont)"
          }
      ]
    },
    {
      "nomquartier": "Krutenau",
      "listerue": [
          {
            "nomrue": "Abreuvoir (rue de l)"
          },
          {
            "nomrue": "Bain Finkwiller (rue du)"
          },
          {
            "nomrue": "Fustel de Coulanges (quai)"
          },
          {
           "nomrue": "Hôpital (place de l)"
          }
      ]
    }
  ],
  "critere":[
    {
      "publictransp": 2,
      "culture": 8,
      "traffic": 5,
      "nature": 7,
      "supermarket": 3,
      "school": 5,
      "sport": 6,
      "nightlife": 4,
      "mean": 5
    },
  ]
}, function(data, textStatus, jqXHR) {
    console.log("Post resposne:"); console.dir(data); console.log(textStatus);         console.dir(jqXHR);
});

这是我发布查询后得到的:

[
  {
    "nomville": "Strasbourg",
    "description": "Ville de Strasbourg",
    "_id": "526ecdd3a78290010c000004",
    "__v": 0,
    "modified": "2013-10-28T20:49:23.235Z",
    "critere": [],
    "quartiers": [
      {
        "_id": "526ecdd3a78290010c000005",
       "listerue": []
     }
    ]
  }
]

这正常吗??

【问题讨论】:

  • “当我尝试使用 Jquery 查询发布此架构的对象时”是什么意思。您能否将源代码发布到您调用模型的位置。
  • 我们需要查看处理对“/api/products”的 POST 请求的服务器端代码。 '$' 与 jquery 无关。这是一条红鲱鱼。

标签: jquery node.js mongodb mongoose


【解决方案1】:

在定义这些架构之前,您指的是 location 架构定义中的 criteremisc。这导致了这个有点神秘的错误,可能是由于模式定义中出现意外的undefined 值,mongoose 拼凑了一个无效的查询。

除此之外,我不知道您要在这里做什么:

product = new ObjModel({
  nomville: req.body.nomville,
  description: req.body.description,

  // Are the next two lines a mistake?  It appears as though you're trying
  // to create an object using the schemas.
  quartier: [quartier],
  critere: [misc],
});

【讨论】:

    猜你喜欢
    • 2017-03-28
    • 1970-01-01
    • 2015-11-17
    • 2019-05-19
    • 2018-02-22
    • 2021-05-24
    • 2017-02-07
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多