当我发出获取请求时,model.findById中的值为空[mongodb]

时间:2019-08-12 15:00:21

标签: node.js mongodb express mongoose

问题 嗨,开发人员,

我遇到的问题是,当我尝试通过id向该系列提出get请求时,显示为null。

我从Atlas Mongos平台上注意到我创建了集合,但是它没有向我显示数据,只有方案的结构向我显示了

enter image description here

Function.js


const fs = require('fs');
const fetch = require('node-fetch');

const BASE_URL = " http://localhost:8081/api/v1/"

async function getSeries() {
  return new Promise((resolve , reject) =>{
    setTimeout(() => {
      const res =  require('./simple_database/series/1.json' , 'utf8');
      resolve(res)      
    }, 1000);
  })
}
module.exports = {
  getSeries
}

路由器

  • allseries 路线允许我访问所有内容。我想做的就是将内容传递给SeriesModel,也许在那里我遇到了数据插入不正确的问题。

  • 在路由 series /:id 中,空值返回给我

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

const f = require('./function');
const SeriesModel = require('./models/series');

router.get('/allseries', (req, res) => {
  f.getSeries().then((series) =>{
    res.status(200).json({
      series
    })
  }).then((doc) =>{
    SeriesModel.insertMany(doc , function(err , docs){
      if(err){
        console.error(err)
      }else{
        console.log(docs);
        console.info('%d serie were successfully stored.', docs.length);
      }
    })
  })
});

router.get('/series/:id' , (req , res , next) =>{
  const id = req.params.id;
  SeriesModel.findById(id)
    .exec()
    .then((doc) =>{
      console.log("From database " , doc);
      res.status(200).json(doc)
    }).catch((err) =>{
      console.error(err);
      res.status(500).json({error: err})
    })
})

module.exports = router;

Model / series.js

const mongoose = require('mongoose');

const serieSchema = mongoose.Schema({
  "_id": {
    "$oid": {
      "type": "ObjectId"
    }
  },
  "series_id": {
    "type": "String"
  },
  "aggregateRating": {
    "reviewCount": {
      "type": "Number"
    },
    "ratingCount": {
      "type": "Number"
    },
    "@type": {
      "type": "String"
    },
    "ratingValue": {
      "type": "Number"
    }
  },
  "episodes": {
    "1x": {
      "07 Ghost": {
        "type": [
          "Mixed"
        ]
      }
    }
  },
  "metadata": {
    "description": {
      "type": "String"
    },
    "url": {
      "type": "String"
    },
    "image": {
      "type": "String"
    },
    "type": {
      "type": "String"
    },
    "id": {
      "type": "String"
    },
    "name": {
      "type": "String"
    }
  },
  "1x": {
    "07 Ghost": {
      "type": [
        "Mixed"
      ]
    }
  }
});

module.exports = mongoose.model("cr_series" , serieSchema);

1 个答案:

答案 0 :(得分:0)

这是因为findById采用这样的对象形式的参数

SeriesModel.findById({_id:id})

您需要告诉查询要与传入对象匹配的json对象。