【问题标题】:Mongoose model.create() responds empty or do not respondeMongoose model.create() 响应为空或不响应
【发布时间】:2020-04-26 15:13:01
【问题描述】:

我用node+express+mongodb创建了一个小项目

这是我调用创建用户的地方:

const express = require("express");
const User = require("../models/user");

const router = express.Router();

router.post("/register", async (req, res) => {
  try {
    const user = await User.create(req.body);
    return res.send({ user });
  } catch (e) {
    return res.status(400).send({ error: "Registration failed" });
  }
});

module.exports = app => app.use("/auth", router);

这是用户的架构:

const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    require: true
  },
  email: {
    type: String,
    require: true,
    unique: true,
    lowercase: true
  },
  password: {
    type: String,
    require: true,
    select: false
  },
  createdAt: {
    type: Date,
    default: Date.now
  }
});

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

module.exports = User;

但是当 o 发出请求时,它永远不会得到响应,它会永远等待。当 o 从请求中取出 await 时,它会得到一个空响应 { "user": {}}

看mongoose文档有点迷茫(想法是做一个简单的rest api,我用python,但想学习node)

【问题讨论】:

  • 我认为错误在您的 req.body 有效负载中。您能否将您发送的有效负载添加为 req.body

标签: node.js express mongoose request schema


【解决方案1】:

您必须从用户模型创建一个新用户,如下所示:

    const express = require("express");
    const User = require("../models/user");

    const router = express.Router();

    router.post("/register", async (req, res) => {
      try {
        var user = new User(request.body);
        var result = await user.create();
        return res.send({ result });
      } catch (e) {
        return res.status(400).send({ error: "Registration failed" });
      }
    });

module.exports = app => app.use("/auth", router);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多