express 在使用 Model 操作 mongodb 时报错,不知道什么原因,求指点

创建用户时,会先对表中的数据进行查询,是在查询的这里出错了,不明白原因,烦请指点:

用户模型:models/User.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const UserSchema = new Schema({
    userName:{
        type:String,
        required:true
    },
    userEmail:{
        type:String,
        required:true
    },
    userPassword:{
        type:String,
        required:true
    },
    userAvatar:{
        type:String
    },
    userDate:{
        type:Date,
        default:Date.now
    }
 });

const UserModel = mongoose.model("User",UserSchema);
module.exports = UserModel; 

定义路由并查询表 router/api/user.js:

 const express = require('express');
 const router = express.Router();
 const myModel = require('../../models/User');

  /**
  * POST api/user/register
  */
 router.post('/register',(req,res) => {
     //从用户模型中创建对象
    var users = new myModel (req.body);
    //查询数据库
    users.findOne({userName:req.body.userName})
        .then((user) => {
            if(user){
                return res.status(400).json({userName:'用户名巳存在'})
            }else{
                const newUser = newUser({
                    userName: req.body.userName,
                    userEmail:req.body.userEmail,
                    userPassword: req.body.userPassword,
                    userAvatar:req.body.userAvatar,
                    userDate:req.body.userDate
                })
            }
        });
    //给数据加密,加密后再保存到数据库
        
    //保存数据到数据库
    user.save()
        .then(user => res.json(user))
        .catch(err => console.log(err));
 })

 module.exports = router;

在使用 postman 测试时提示如下信息:
http://localhost:5000/api/user/register?userId=302&userName=kevin.chen&userEmail=kevin.chen@anviz.com&userPassword=123456

clipboard.png

node 8.12.0
mongoose 5.4.0
body-parser 1.18.3
express 4.16.4

阅读 1.9k
2 个回答

兄弟 不是保存不成功查不到数据啊 看报错 findOne not a function 语法错误
clipboard.png
粗略看了一下你的代码,语法错误不止一处

users.findOne改成myModel.findOne

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题