mon goose Функция findOne () не возвращает указанный элемент - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь получить один элемент, используя mon goose в javascript, и не могу заставить его работать. Элемент называется «имя» в моей базе данных, и когда я использую .get с / products, он работает нормально. Все мои методы, которые позволяют получить ВСЕ элементы, работают отлично, у меня просто проблемы с отдельными элементами. Любая помощь очень ценится. Спасибо!

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

const app = express();

app.set('view engine', 'ejs');

app.use(bodyParser.urlencoded({
  extend: true
}));

app.use(express.static("public"));

mongoose.connect("mongodb://localhost:27017/ShoppingCartDB", {useNewUrlParser: true});

const productSchema = {
  name: String,
  price: String,
  quantity: Int
};

const Products = mongoose.model("Products", productSchema);
//sets route to all items in products database
app.route("/products")
//gets ALL items in cart
.get(function (req, res) {
  Products.find(function(err, foundProducts) {
    console.log(foundProducts);
    if (!err) {
      res.send(foundProducts);
    } else {
      res.send(err);
    }
  });
})
//deletes ALL items in cart
.delete(function(req, res) {
  Products.deleteMany(function(err) {
    if (!err) {
      res.send("All products removed from shopping cart");
    } else {
      res.send(err);
    }
  })
});
//changes route to single item based on name
app.route("/products/:itemName")

.get(function(req, res) {
  Products.findOne({name: req.params.itemName}, function(err, foundItem){
    if (foundItem) {
      res.send(foundItem);
    } else {
      res.send(err);
    }
  });
})

.delete(function(req, res) {
  Products.deleteOne(
    {name: req.params.itemName},function(err) {
      if (!err) {
        res.send("Success");
      } else {
        res.send(err);
      }
    }
  );
});




app.listen(3000, function() {
  console.log("Server is running on port 3000");
});

Моя база данных:

{
        "_id": "5e1ca39ef94f6e20827ee890",
        "name": "orange",
        "price": "0.99",
        "quantity": 1
    },
    {
        "_id": "5e1ca39ef94f6e20827ee893",
        "name": "apple",
        "price": "1.5",
        "quantity": 2
    },
    {
        "_id": "5e1ca39ef94f6e20827ee896",
        "name": "bread",
        "price": "3.99",
        "quantity": 1
    },
    {
        "_id": "5e1ca39ef94f6e20827ee899",
        "name": "milk",
        "price": "4.99",
        "quantity": 3
    },
    {
        "_id": "5e1ca39ef94f6e20827ee89c",
        "name": "coffee",
        "price": "4.99",
        "quantity": 2
    }

1 Ответ

0 голосов
/ 14 января 2020

Есть две проблемы с вашим кодом:

Количество должно быть Number, а не Int:

const productSchema = {
    name: String,
    price: String,
    quantity: Number
};

extended: true, а не extend: true на вашем bodyParser :

app.use(
    bodyParser.urlencoded({
    extended: true
    })
);

Таким образом, я получаю 200 на маршруте шоу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...