显示_id的强制转换错误,但id永远不会使用节点js

时间:2016-09-06 06:03:20

标签: javascript node.js mongodb

我已经在node和mongo上工作了一段时间但是现在遇到这个问题并没有解决这个问题: 这是我的代码:

router.get('/getLocBJ', function(req, res) {
    mongoose.model('Locations').find({
    }, function(err, locations) {
        res.format({
            json: function() {
                res.json(locations);
            }
        });
    }).limit(500);
});

每当我调用此API时 我的期望:它应该从集合中返回500行 发生了什么:它向我显示了这个错误:

GET Error: There was a problem retrieving: CastError: Cast to ObjectId failed for value "getLocBJ" at path "_id"

我之前做过的事情:我试图返回一些特定的值,如" _id,lat& LNG"从那以后,即使从功能中删除罪魁祸首代码,它也显示出相同的错误。 尝试清除系统缓存但没有成功。

编辑使用的架构:

var mongoose = require('mongoose');  
var locationSchema = new mongoose.Schema({  
  trackernumber: String,
  cdate : String,
  accountId : String,     
  time : String,       
  speed : String,    
  lat : String,
  lng : String,    
  orientation:String,
  createdDate:Date,
  rowData:{},
  alarm_code : String,
  distance : String,
  alarm : {},
  locFlag : String    
});
mongoose.model('Locations', locationSchema);

2 个答案:

答案 0 :(得分:1)

所以,在这件事上花了2天以上,幸运的是,我解决了这个问题。 我最近开发的所有 get API都在发生。

我是如何解决这个问题的,

虽然不知道它是如何工作的,但这是一种奇怪的解决方案 (所以我所做的请看看相同的代码):

 router.get('/:id/getLocBJ', function(req, res) {
    mongoose.model('Locations').find({
    }, function(err, locations) {
        res.format({
            json: function() {
                res.json(locations);
            }
        });
    }).limit(500);
});

我刚刚添加了获取参数' /:id'在API调用中:

router.get('/:id/getLocBJ', function(req, res) {

并且错误消失了我仍然没有得到它是如何工作的。

如果有人可以帮助详细说明这将非常有用。

由于

答案 1 :(得分:0)

可以尝试这一个:

router.get('/getLocBJ', function(req, res) {
  mongoose.model('Locations').find().limit(500).exec(function(err, locations) {
    if(err) {
      return res.status(500).send({msg: 'Error occurred'});
    }
    return res.status(200).send(locations);
  });
});

并使用module.exports导出您的模型,因为您使用mongoose.model('Locations'),否则您可能会收到错误。

module.exports = mongoose.model('Locations', locationSchema);

N.B:如果手动添加_id值或使用模型创建,则首先删除该文档。 _id会自动生成,因此您无需手动添加或在架构

中添加