小编geo*_*art的帖子

对于路径"_id"处的值"586d62878fc14d30e0ac5379",转换为ObjectId失败

我正在用node/express/mongo/mongoose构建一个应用程序.我遇到了一个错误,我似乎无法弄清楚,谷歌搜索到目前为止没有任何帮助.

我创建了一个简单的,以猫为主题的示例来重现我遇到的错误.我基本上试图通过ObjectId检索一个对象.我正在使用在创建对象时自动生成的对象id(作为字符串).

当我导航到路径localhost:3000/kitty/586d62878fc14d30e0ac5379时,我收到以下错误:'对于模型"Kitten",路径为"_id"的值为"586d62878fc14d30e0ac5379"的"转换为ObjectId"失败.令人讨厌的代码行是我对model.Kitten.findById()的调用[见下文].

据我所知,ObjectId字符串是有效的.

我已经尝试将我的字符串对象id转换为mongoose对象id并将其传递给findById而不是字符串值,但这只会产生一个奇怪的"hex is not a function"错误,而且,我的印象是这是不必要的,因为mongoose会自动将有效的字符串id强制转换为对象id.

我正在使用托管的mongodb实例(mlab).

这是我的代码供参考:

的package.json:

{
  "name": "testapp",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.15.2",
    "cookie-parser": "~1.4.3",
    "debug": "~2.2.0",
    "express": "~4.14.0",
    "jade": "~1.11.0",
    "mongodb": "^2.2.19",
    "mongoose": "^4.7.6",
    "morgan": "~1.7.0",
    "serve-favicon": "~2.3.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

app.js:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');

var app = express(); …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js express

2
推荐指数
1
解决办法
1677
查看次数

标签 统计

express ×1

mongodb ×1

mongoose ×1

node.js ×1