2016-09-06 36 views
1

我一直在节点和mongo一段时间,但现在这个问题没有得到解决现在问题: 这是我的代码:显示为_id铸造错误,但ID从未使用节点js

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); 

回答

1

所以,花了超过2天的这件事情后,幸运的是,我解决了这个问题。 这是发生在所有得到我最近在开发的API。

我如何解决这个,

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

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

我只是增加了一个得到 PARAM:在API调用“/ ID”:

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

和错误飞走了,我还没有得到它的工作方式。

如果任何人都可以帮助详细说明这将是非常有益的。

感谢

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自动生成,所以你不需要手动添加或架构

+0

的_id字段自动生成的我还没有手动和为你建议我尝试使用,但仍是同样的结果代码添加它。 – VishAl

+0

你能显示你的模式吗? –

+0

好吧,请检查编辑 – VishAl