【发布时间】:2015-09-20 14:28:00
【问题描述】:
在我的 routes/index.js 文件中,我有:
var mongoose = require('mongoose/');
...
var schema = mongoose.Schema;
var user_details = new schema(
{
username: String,
password: String
},
{
collection: 'userInfo'
});
router.post('/newuser', function(request, response, next)
{
var newuser = new user_details(
{
'username': request.params.username,
'password': request.params.password
});
newuser.save();
response.redirect('/');
});
这给出了以下错误。 48:17 位置是“var newuser = new user_details(”行中的“新”:
object is not a function
TypeError: object is not a function
at module.exports (/Users/jonathan/server/routes/index.js:48:17)
at Layer.handle [as handle_request] (/Users/jonathan/server/node_modules/express/lib/router/layer.js:82:5)
at next (/Users/jonathan/server/node_modules/express/lib/router/route.js:110:13)
at Route.dispatch (/Users/jonathan/server/node_modules/express/lib/router/route.js:91:3)
at Layer.handle [as handle_request] (/Users/jonathan/server/node_modules/express/lib/router/layer.js:82:5)
at /Users/jonathan/server/node_modules/express/lib/router/index.js:267:22
at Function.proto.process_params (/Users/jonathan/server/node_modules/express/lib/router/index.js:321:12)
at next (/Users/jonathan/server/node_modules/express/lib/router/index.js:261:10)
at Function.proto.handle (/Users/jonathan/server/node_modules/express/lib/router/index.js:166:3)
at router (/Users/jonathan/server/node_modules/express/lib/router/index.js:35:12)
at Layer.handle [as handle_request] (/Users/jonathan/server/node_modules/express/lib/router/layer.js:82:5)
at trim_prefix (/Users/jonathan/server/node_modules/express/lib/router/index.js:302:13)
at /Users/jonathan/server/node_modules/express/lib/router/index.js:270:7
at Function.proto.process_params (/Users/jonathan/server/node_modules/express/lib/router/index.js:321:12)
at next (/Users/jonathan/server/node_modules/express/lib/router/index.js:261:10)
at SessionStrategy.strategy.pass (/Users/jonathan/server/node_modules/passport/lib/middleware/authenticate.js:318:9)
我对“对象不是函数”的理解是某些对象已(尝试)作为函数被调用,例如{0: false, 1: true}()。但是你能解释一下我的代码中是什么触发了我的错误吗?
--更新--
我想我正在做答案的第一条评论中建议的事情。我现在得到的错误是:
/Users/jonathan/node_modules/mongoose/lib/index.js:340
throw new mongoose.Error.OverwriteModelError(name);
^
OverwriteModelError: Cannot overwrite `userInfo` model once compiled.
触发的代码行是:
var user = mongoose.model('userInfo', user_details);
【问题讨论】:
-
user_details 是一个模式,而不是一个模型。您错过了设置模型的重要一步。 mongoosejs.com/docs/guide.html
-
在旁注中,传递
function (req, res, next)通常更习惯于表达。我还建议关注airbnb javascript style guide。
标签: javascript node.js mongodb express mongoose