社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MongoDB

Express/MongoDB中的HTTP请求返回散列id和值0,而不是JSON对象

Matt Croak • 4 年前 • 578 次点击  

{
    "_id": "5c791ef4f80cfba4379987f1",
    "__v": 0
}

当它看起来像这样时:

{
   "plan_name": 'first plan',
   "plan_access": 1
}

我试图在Postman中创建第一个计划,这似乎是成功的,但由于某些原因,当我尝试检索计划时(GET request to mongodb://127.0.0.1:27017/plans {"_id": "...", "__v": 0}

这是我的server.js文件

const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const cors = require("cors");
const mongoose = require("mongoose");
const planRoutes = express.Router();
const PORT = 4000;

let Plan = require('./models/plan.model');

app.use(cors());
app.use(bodyParser.json());

mongoose.connect('mongodb://127.0.0.1:27017/plans', {useNewUrlParser: 
true});

const connection = mongoose.connection;

connection.once('open', function(){
   console.log("MongoDB database connection established successfully");
});

planRoutes.route('/').get(function(req, res){
   Plan.find(function(err, plans){
     if(err){
       console.log(err);
     } else {
       console.log(plans)
       res.json(plans)
     }
  });
});

planRoutes.route('/:id').get(function(req, res){
  Plan.findById(req.params.id, function(err, plan){
    if(err){
      console.log(err);
    } else {
      res.json();
    }
  });
 });

 planRoutes.route('/add').post(function(req, res){
   let plan = new Plan(req.body);
   plan.save()
       .then(plan=>{
           res.status(200).json({'plans': 'Plan made successfully'});
       })
       .catch(err=>{
          res.status(400).send('Plan made failed')
       });
  });

  planRoutes.route('/update/:id').post(function(req, res){
     Plan.findById(req.params.id, function(err, plan){
       if(!plan){
        res.status(404).send('data not found');
       } else {
       plan.plan_name = req.body.plan_name;
       plan.access = req.body.plan_access;

       plan.save().then(plan=>{
          res.json('Update successful');
       })
       .catch(err=>{
           res.status(400).send('Update failed');
       });
    }
 });
});

app.use('/plans', planRoutes);

app.listen(PORT, function(){
    console.log("server started on port: " + PORT + " teehee");
});

这是我的计划模型文件

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

let Plan = new Schema({
  plan_name:{
    type: String
  },
  access:{
    type: Number //from 1 to 3
  },
}) 

module.exports = mongoose.model('Plan', Plan);

我正在开发MacOSMojave,并相应地更新了homebrew、xcode和mongo。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53993
 
578 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Vladyslav Usenko
Reply   •   1 楼
Vladyslav Usenko    5 年前

这个散列id是ObjectID,\uu v是文档的版本标志,由mongoose框架填充。

不管怎样,看起来你的代码应该可以工作。我看到模式中的plan_name和access字段不是必需的,所以可能mongoose在req.body对象中找不到它们,并且会悄悄地将其吞入。

请确保正确设置了express的请求正文和内容类型解析中间件。