我正在用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)