用快递设置猫鼬

时间:2019-08-20 15:15:29

标签: javascript node.js mongodb mongoose

我目前正在将MongoDB与nodejs一起使用,因此我正在努力使用save方法,如果有人可以帮助我解决问题,它将返回promise待定,我将非常感激。 这是我的代码:

  

booking.js:

var express = require("express");
const Booking = require("../model/booking");
var router = express.Router();

router.get("/booking", async (req, res) => {
  const booking = new Booking({
    address: req.body.address,
    name: req.body.name,
    latitude: req.body.latitude,
    longitude: req.body.longitude
  });
  try {
    const savedBooking = await booking.save();
    console.log(savedBooking);
    res.json(savedBooking);
  } catch (e) {
    res.json({ message: e });
  }
});


module.exports = router;
  

/module/booking.js:

const mongoose = require("mongoose");

const bookingSchema = mongoose.Schema({
  userName: {
    type: String,
    default: "khalil"
  },

    address:String,
    name:String ,
    latitude: String,
    longitude: String


});

module.exports = mongoose.model("Booking", bookingSchema);

3 个答案:

答案 0 :(得分:0)

我认为您的错误在于获取请求参数。您正在使用GET请求,并尝试从请求主体中获取数据,但GET请求仅具有参数,而没有主体。将其更改为POST或将数据更改为req.params.address

答案 1 :(得分:0)

您可以使用回调函数来Cannot PUT预订对象。请记住删除log中的async

async (req, res)

答案 2 :(得分:0)

您正在尝试从没有正文的 get 方法读取请求参数。更改您的“ booking.js”代码,例如:

const express = require("express");
const router = express.Router();
const Booking = require("../model/booking");

router.post("/booking", async (req, res) => {
    try {
        const {
            address,
            name,
            latitude,
            longitude
        } = req.body;
        const booking = new Booking({
            address,
            name,
            latitude,
            longitude,
        });
        const savedBooking = await booking.save();
        console.log(savedBooking);
        return res.status(200).json(savedBooking);
    } catch (err) {
        console.log('Error is: => ', err);
        return res.status(500).json({
            error: err
        });
    }
});

module.exports = router;

,然后您可以像使用JSON有效内容的http post 方法那样调用它。