我目前正在将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);
答案 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 方法那样调用它。