我遇到一个User.find is not a function
错误。我相信我已经正确设置了所有东西,但显然没有。
这是我的模型以及其他代码。
用户模型
const mongoose = require('mongoose')
let userSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
}
})
const User = mongoose.model("user", userSchema)
module.exports.User = User
用户路线
const express = require('express')
const router = express.Router()
const mongoose = require('mongoose')
const User = require('../models/user')
/* GET users listing. */
router.get('/', (req, res) => {
User.find()
.then(function(users) {
res.status(201).json(users)
})
.catch(function(err) {
console.error(err)
res.status(500).send('Eorror ' + err)
})
})
module.exports = router
app.js
const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const cors = require('cors');
const mongoose = require('mongoose');
// connect database
mongoose.connect('mongodb://localhost/<removed>', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true
});
console.log(mongoose.connection.readyState);
// import routes
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.use(cors());
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
运行该应用程序时,我的就绪状态为2,因此正在连接。所以不确定我要去哪里。
我试图将数据库连接保持为一个文件,整个应用程序可以在需要的地方使用数据库。这部分仅用于API,因此视图等并不重要。
答案 0 :(得分:1)
使用以下代码,它将为您提供帮助
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let userSchema = Schema({
email: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
}, {
versionKey: false
});
module.exports = mongoose.model('user', userSchema);
答案 1 :(得分:0)
您以错误的方式要求模型。因为您是这样导出的:
module.exports.User = User
因此,您需要以这种方式要求它:
const { User } = require('../models/user')
答案 2 :(得分:0)
我像波纹管一样导出用户模型
module.exports = User;