Стек Mern: TypeError: Search.find () (или Search.findById () / Search.findOne ()) не является функцией? - PullRequest
1 голос
/ 06 апреля 2020

Я собираюсь разработать компонент, который извлекает данные из моей базы данных с помощью стека mern. Я получил эту ошибку с бессонницей, и я несколько раз менял код. ошибка:

Ошибка типа: Search.find не является функцией в C: \ Users \ yasmin \ search engine \ search - Copy \ backend \ server. js: 28: 8 на уровне .handle [as handle_request] (C: \ Users \ yasmin \ search engine \ search - Копировать \ backend \ node_modules \ express \ lib \ router \ layer. js: 95: 5) на следующем (C: \ Users \ yasmin \ search engine \ search - Копировать \ backend \ node_modules \ express \ lib \ router \ route. js: 137: 13) в Route.dispatch (C: \ Users \ yasmin \ search engine \ search - Скопируйте \ backend \ node_modules \ express \ lib \ router \ route. js: 112: 3) в Layer.handle [как handle_request] (C: \ Users \ yasmin \ search engine \ search - Copy \ backend \ node_modules \ express \ lib \ router \ layer. js: 95: 5) в C: \ Users \ yasmin \ search engine \ search - Копировать \ backend \ node_modules \ express \ lib \ router \ index. js : 281: 22 в Function.process_params (C: \ Users \ yasmin \ search engine \ search - Копировать \ backend \ node_modules \ express \ lib \ router \ index. js: 335: 12) в следующее (C: \ Users \ yasmin \ search engine \ search - Copy \ backend \ node_modules \ express \ lib \ router \ index. js: 275: 10) в jsonParser (C: \ Users \ yasmin \ search engine \ search - Копировать \ backend \ node_modules \ body-parser \ lib \ types \ json. js: 119: 7) в Layer.handle [как handle_request] (C: \ Users \ yasmin \ search engine \ search - Copy \ backend \ node_modules \ express \ lib \ router \ layer. js: 95: 5) в trim_prefix (C: \ Users \ yasmin \ search engine \ search - Копировать \ backend \ node_modules \ express \ lib \ router \ index. js: 317: 13) в C: \ Users \ yasmin \ search engine \ search - Copy \ backend \ node_modules \ express \ lib \ router \ index. js: 284: 7 в Function.process_params (C: \ Users \ yasmin \ search engine \ search - Скопируйте \ backend \ node_modules \ express \ lib \ router \ index. js: 335: 12) в следующем (C: \ Users \ yasmin \ search engine \ search - Copy \ backend \ node_modules \ express \ lib \ router \ index. js: 275: 10) в jsonParser (C: \ Users \ yasmin \ search engine \ search - Copy \ backend \ node_modules \ body-parser \ lib \ types \ json. js: 119: 7) в Layer.handle [как handle_request] (C: \ Users \ y asmin \ search engine \ search - Копировать \ backend \ node_modules \ express \ lib \ router \ layer. js: 95: 5)

мой код содержит:

поиск. модель. js:

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

let Search = new Schema(
  {
    imagePath: { type: String, required: true },
    title: { type: String, required: true },
    description: { type: String, required: true },
  },
  { collection: "search" }
);

module.export = mongoose.model("Search", Search);

Мой сервер. js:

const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const router = express.Router();
var Schema = mongoose.Schema;

require("dotenv").config();

const app = express();
const port = process.env.PORT || 5000;

let Search = require("./models/search.model");

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

const uri = process.env.ATLAS_URI;

mongoose.connect(uri, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useCreateIndex: true,
});

const connection = mongoose.connection;

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

app.post("/search", (req, res) => {
  Search.find({}, function (err, search) {
    if (err) {
      res.status(400).json("Error: " + err);
    } else {
      res.json(search);
    }
  });
});

app.listen(port, () => {
  console.log(`server is running on port: ${port}`);
});

и, поскольку я сомневаюсь, что отсутствует зависимость, я отправляю свой пакет. json:

{
  "name": "backend",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "server": "nodemon server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "concurrently": "^5.1.0",
    "cors": "^2.8.5",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "mongoose": "^5.9.6"
  }
}

Я хочу добавить, что мой сервер подключен к базе данных MongoDB, и я создал коллекцию с именем search вручную, из которой можно получать данные. когда я открываю свой клиент MongoDB и использую метод db.collection.find (), он работает отлично.

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