简体   繁体   English

用于检索MongoDB集合的API Route

[英]API Route for retrieving a MongoDB collection

I'm trying to retrieve data from my mongo database. 我正在尝试从我的mongo数据库中检索数据。 The problem occurs when I try to do the get route in my API. 当我尝试在我的API中执行get路由时会出现问题。 The error I get is: SchemeName.collection is not a function. 我得到的错误是: SchemeName.collection不是一个函数。

Here is my API in routes/api/tejidos 这是我在routes/api/tejidos

const express = require("express");
const router = express.Router();
const Equipo = require("../../../models/Equipo");

router.post("/crear", (req, res) => {
    // Form validation

  const newEquipo = new Equipo({
          nombre: req.body.nombre,
          marca: req.body.marca,
          modelo: req.body.modelo,
          serial: req.body.serial,
          proveedor: req.body.proveedor,
          estado: req.body.estado,
          zona: req.body.zona,
          fechaCompra: req.body.fechaCompra,
          tiempoGarantia: req.body.tiempoGarantia,
          guiaUsoRapido:req.body.guiaUsoRapido
        });
    //if (err) throw err

    newEquipo
    .save()
    .then(equipo=>res.json(equipo))
    .catch(err => console.log(err));
    });

    router.get('/leer', function(req, res) {
      const equipos = Equipo.collection("equipos")
      res.json({
        equipos: equipos
      });
    });

    module.exports = router;

And this is my server.js 这是我的server.js

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const passport = require("passport");

const users = require("./routes/api/users");
const equipos = require("./routes/api/tejidos/equipos");

const app = express();
// Bodyparser middleware
app.use(
  bodyParser.urlencoded({
    extended: false
  })
);
app.use(bodyParser.json());
// DB Config
const db = require("./config/keys").mongoURI;
// Connect to MongoDB
mongoose
  .connect(
    db,
    { useNewUrlParser: true }
  )
  .then(() => console.log("MongoDB successfully connected"))
  .catch(err => console.log(err));

  // Passport middleware
app.use(passport.initialize());

// Passport config
require("./config/passport")(passport);

// Routes
app.use("/api/users", users);
app.use("/api/tejidos/equipos", equipos);



const port = process.env.PORT || 5000; // process.env.port is Heroku's port if you choose to deploy the app there

app.listen(port, () => console.log(`Server up and running... ${port} !`));

I need to retrieve data in my collection (the ones I created with the post method) from the database when I use the GET method in Postman at http://localhost:5000/api/tejidos/equipos/leer 当我在Postman的http://localhost:5000/api/tejidos/equipos/leer使用GET方法时,我需要从数据库中检索我的集合中的数据(我使用post方法创建的数据)

Also, I will appreciate any documentation that you recommend. 此外,我将感谢您推荐的任何文档。

Simply use find method: 只需使用find方法:

router.get('/leer', async (req, res) => {
  const equipos = await Equipo.find();
  res.json({ equipos });
});

And here is the helpful documentation for making queries with mongoose 这是使用mongoose进行查询的有用文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM