GET请求无法从数据库检索数据

时间:2019-02-01 11:57:12

标签: node.js mongodb mean-stack

我对node.js很陌生,我正在编写GET请求以从数据库中检索文档。这是我的请求的定义(在users.js中)-

router.get('/', function (req, res, next) {
    Booking.find({} ,(err,prevBookings)=>{
      if(err) {
          res.status(400).send('No previous bookings found.');
      }
      if(prevBookings[0]) {
          res.status(200).send(prevBookings);
      }
      else{
          console.log("no records")
          res.status(200).send("No previous bookings found.")
      }
    });

});

我在index.js文件中定义了以下内容:

router.use('/users', require('./users'))
router.use('/prev', require('./users'))
//and there are other routers here too but totally unrelated to users.js

但是,我在Postman上遇到以下错误:

NotFoundError: Not Found

我知道此错误表明我没有正确路由。但是我无法确定我要去哪里。我定义的其他路线正在运行。有人可以帮我这个忙吗?谢谢:)

1 个答案:

答案 0 :(得分:4)

我认为您两次指定了“ / prev”。如果将users.js中的路由更改为“ /”,请查看会发生什么。我认为目前“ / prev / prev”路线会返回结果。

我猜您的users.js应该看起来像这样:

const express = require("express");
const router = express.Router();

router.get('/', function (req, res, next) {
    Booking.find({} ,(err,prevBookings)=>{
    if(err) {
        res.status(400).send('No previous bookingd found.');
    }
    if(prevBookings[0]) {
        res.status(200).send(prevBookings);
    }
    else{
        console.log("no records")
        res.status(200).send("No previous bookings found.")
    }
    });

});

module.exports = router;

然后在顶层(index.js)或其他任何东西上

app.use("/", router);
router.use('/prev', require('./users'))

这应该在“ / prev”上返回正确的结果

对于预订模型,您是否可以尝试修改猫鼬模式(添加{collection:}项):

var bookingSchema = mongoose.Schema({
    _id : {
        type: mongoose.Schema.Types.ObjectId,
        required: true
    },
    user_id : {
        type: mongoose.Schema.Types.Mixed,
        ref: 'User',
        required: true
    },
    places_id : {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Place',
        required: true
    },
    fromDate : {
        type: Date,
        required: true,
        default: Date.now()
    },
    toDate : {
        type: Date,
        required: true,
        default: Date.now()
    },
    people_count : {
        type: String,
        required: true
    },
    package_details : {
        type: mongoose.Schema.Types.Mixed
    },
    total_cost : {
        type : Number,
        required : true
    },
    cost : {
        type: Number,
        required: true
    },
    // confirmation: {
    //     type : String,
    //     required: true
    // },
    transaction_no : {
        type : String,
        required : true
    }
}, { 
    collection: 'booking' 
}
)