Как запросить / получить данные из mongoDB на основе поля ввода / текста - PullRequest
0 голосов
/ 20 января 2019

Hellow там.спасибо за нажатие на этот пост.Я хотел бы знать, как я могу получить / запросить данные из mongodb на основе поля ввода.Например, если бы я должен был ввести «США» в поле ввода с именем «местоположение», он получит только те данные, которые содержат США, и эти данные будут отображены на следующей странице.Как мне заставить это работать, когда я нажимаю на кнопку.я свяжу некоторые скриншоты моего веб-сайта и кода (у меня такое ощущение, что мой код совершенно неверный.)

ошибка, с которой я сталкиваюсь после вставки вашего кода и кода для передачи данных

это мой home.component.html line40.это передать данные на следующую страницу

домашняя страница, где я буду вставлять страну в поле ввода страны, после того, как я нажму «найти», она получит данные из монгов стране, в которую я вставил.

это страница, на которой будут отображаться данные

вот некоторые коды, с которыми я пытался возиться (еще не проверилесли работает)

 //this is in my api.js file
//get data from "listing"(which is my db collection) based on "inputcountry( the inputfield)"
router.get('/home', function(req, res) {
    db.collection('listing').find({"inputCountry": req.body.inputCountry}).toArray( (err, results) => {
        console.log('got search')
        res.send(results)});
    });


//this is in my service .ts file (named getservice)
//this is for the searching of house based on location
  searchHouse() {
    return this.http.get<any[]>('./api/home');
    }
    
    //this is in my home. component.ts file (where the searching will happen)
     constructor(private fb: FormBuilder, private router: Router, private getService: GetService) {
  // Retrieve posts from the API
    this.getService.searchHouse().subscribe(searchedhouses => {
    this.searchedhouses = searchedhouses;
  });
  }
  
<!--this is in my home.component.html where there is the input field named "inputcountry" and submit button -->

 <form [formGroup] = "myForm" (ngSubmit) = "searchHouse (myForm)">
            <div class="form-group">
            <label for="inputCountry">Enter Country</label>
            <input type="text" class="form-control"  formControlName="inputCountry" id="inputCountry"   name = "inputCountry" placeholder="Location e.g Singapore              .">
            </div>
            
              <button class="btn btn-lg btn-primary btn-block text-uppercase" routerLink="/houses" type="submit" >Find</button>
     
            </form>
            

Ответы [ 2 ]

0 голосов
/ 20 января 2019

ну так по коду,

в бэкэнд-коде, для API вы можете поместить ввод Regexified, для ожидаемого выхода,

router.get('/home', function(req, res) {
    db.collection('listing').find({"inputCountry": { $regex: req.query.inputCountry ,$options: 'i' }}).toArray( (err, results) => {
        console.log('got search')
        res.send(results)});
    });

этот код даст вам результаты в выводе. который вы можете показать на следующей странице, может быть в интерфейсе.

в угловых есть много лучшего подхода для краткости, вы можете сделать что-то вроде этого:

 onSubmit = function (allValues) {
    console.log(allValues);
    this.http.get("http://localhost/home?inputCountry="+allValues.inputCountry).subscribe((data) => {
   //you will get the result here, show that to user. 
});
  };


<form [formGroup]="myForm" (ngSubmit)="onSubmit(myForm.value)">
  <div class="form-group">
    <label for="inputCountry">Enter Country</label>
    <input
      type="text"
      class="form-control"
      formControlName="inputCountry"
      id="inputCountry"
      name="inputCountry"
      placeholder="Location e.g Singapore              ."
    />
  </div>

  <button
    class="btn btn-lg btn-primary btn-block text-uppercase"
    routerLink="/houses"
    type="submit"
  >
    Find
  </button>
</form>


0 голосов
/ 20 января 2019

Вам необходимо использовать регулярное выражение для поиска данных в mongodb согласно вашему полю ввода.

https://docs.mongodb.com/manual/reference/operator/query/regex/

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