$ search "имеет неправильный тип. Ожидаемая строка, обнаружено значение null MongoDB - PullRequest
0 голосов
/ 28 мая 2020

У меня есть простое приложение, которое использует React на переднем конце и Node.js на бэкэнде. Я пытаюсь получить входное значение поля поиска и запросить базу данных MongoDB, используя это входное значение. В настоящее время, когда я отправляю значение ввода в мою конечную точку / search, я получаю эту ошибку:

MongoError: "$search" had the wrong type. Expected string, found null Почему запрос равен нулю, когда я его отправляю, и как я могу отправить его правильно? Вот мой ввод:

import React, { Component } from "react";
import axios from "axios";

class Search extends Component {


    getSearchQuery = () => {

        const queryString = document.querySelector(
            ".search-input"
        ).value;

        axios.post("http://localhost:3001/search", {
            queryString: queryString,
        });

        console.log(queryString)
    };

    render() {
        return (
            <div>
                <input
                    type="text"
                    className="search-input"
                />
                <button type="submit" onClick={this.getSearchQuery}></button>
            </div>
        );
    }
}

export default Search;
// Requiring the dependencies
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
require('dotenv').config();
const mongoose = require('mongoose');
const PORT = process.env.PORT || 3001;
const BASE_URL = process.env.REACT_APP_BASE_URL;
const itemRoutes = express.Router();

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

mongoose.connect(BASE_URL, { useNewUrlParser: true })

const connection = mongoose.connection;

connection.once('open', function () {
  console.log('Connection to MongoDB established succesfully!');
});

let collection = connection.collection("posts_with_tags_test");
collection.createIndex(
  {
    postContent: 'text',
    title: 'text'
  }
);

itemRoutes.route('/search').post(async (req, res) => {
  connection.collection("posts_with_tags_test").createIndex({ postContent: "text" })
  let result = await connection.collection("posts_with_tags_test").find({
    $text: {
      $search: req.body.queryString
    }
  }).toArray();
  res.send(result);
});

app.use('/', itemRoutes);
app.use('/comments', itemRoutes);
app.use('/search', itemRoutes);

app.listen(PORT, function () {
  console.log('Server is running on' + ' ' + PORT);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...