Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB和Mongoose:无法检索数据_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js MongoDB和Mongoose:无法检索数据

Node.js MongoDB和Mongoose:无法检索数据,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我是刚接触猫鼬的,从收集中获取数据时遇到问题 router.js --------- router.post('/api/v1/cars-by-type', cars.getCarsByType); router.get('/api/v1/car-criteria', cars.getCarCriteria); cars.js ------- var mongoose = require('mongoose'); mongoose.connect(mongodb://[somehost]/[s

我是刚接触猫鼬的,从收集中获取数据时遇到问题

router.js
---------
router.post('/api/v1/cars-by-type', cars.getCarsByType);
router.get('/api/v1/car-criteria', cars.getCarCriteria);

cars.js
-------
var mongoose = require('mongoose');
mongoose.connect(mongodb://[somehost]/[somedb]);

var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;

var carSchema = new Schema({
  id: ObjectId,
  key: String,
  make: String,
  model: String,
  submodel: String,
  year: String,
  name: String,
  type: String,
  values: {
    price: Number,
    fuel_eff: Number,
    performance: Number,
    comfort: Number,
    condition: Number,
    safety: Number
  },
  image: String
});
var Car = mongoose.model('Car', carSchema);

var carCriteriaSchema = new Schema({
  key: String,
  full_name: String,
  type: String,
  is_objective: Boolean,
  goal: String
})
var Criteria = mongoose.model('Criteria', carCriteriaSchema);

var getCarsByType = function (req, res) {
  Car.find({'type':{$in:req.body.type}}, function (err, data) {
    if(err) {
        console.log("Error in getting car: " + JSON.stringify(err));
        res.send("Error in getting car: " + err);
    }

    console.log("Car data: " + JSON.stringify(data));
    res.send(data);
  });
}

var getCarCriteria = function (req, res) {
  Criteria.find({'key':'performance'}, function (err, carCriteria) {
    if(err) {
        console.log("Error in getting car-criteria: " + JSON.stringify(err));
        res.send("Error in getting car-criteria: " + err);
    }

    console.log("Car-criteria: " + JSON.stringify(carCriteria));
    res.send(carCriteria);
  })
}

module.exports = {
  getCarsByType: getCarsByType,
  getCarCriteria: getCarCriteria
}
在cars.js中,函数“getCarsByType”工作正常,返回的所有数据(通过Postman测试)都与我使用mongodb shell命令获取的数据匹配

但是“getCarCriteria”始终返回空数据。
从控制台:

Car-criteria: []
这是使用mongo shell查询条件集合的示例:

rs-ds049570:PRIMARY> db.criteria.find({'key':'performance'}).pretty()
{
  "_id" : ObjectId("54f4f3f574c2b4daef744be8"),
  "key" : "performance",
  "full_name" : "Performance",
  "type" : "NUMERIC",
  "is_objective" : false,
  "goal" : "MAX"
}
任何洞察都将不胜感激。

尝试以下方法:

var Criteria = mongoose.model('Criteria', carCriteriaSchema, 'criteria');
猫鼬将集合名称复数为“criterias”。因此,您需要指定实际的集合名称