Как отправить данные из тега ejs file / script файла ejs в nodejs - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь найти способ отображения местоположения на карте Google с помощью API Google Map, а также одновременно сохранять местоположение, в котором выполняется поиск, в базе данных MySQL. Но здесь я не могу сделать и то и другое, так как передача значения в файл nodejs на маршруте, а также отображение местоположения на карте вместе не происходит одним щелчком мыши. Я пытаюсь найти способ, как сделать оба вместе. Пожалуйста, ведите меня, сделайте оба.

Мой код -

server.js

const ejs = require('ejs')

app.set('views',path.join(__dirname+'/views'));

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

app.use('/', require('./display.js'));


  app.get('/', (req, res,next) => {
      const loc = req.body.message;
      console.log(loc , "location")
    res.render('location', {
      data: req.body, // { location }

      errors: {
        message: {
          msg: 'A message is required'
        },
        email: {
          msg: 'That email doesn‘t look right'
        }
      }

    })
next();
  })

  app.get('/saveInDatabase',function(req,res){
    // var post  = {from:'me', to:'you', msg:'hi'};
    var post =req.body;
    db.query('INSERT INTO locations values '+ post +";", function(err, result) {
      if (err) throw err
      else{
        console.log("saveInDatabase Result = ", result);
        res.render ('location');            
      }
    });
});



  app.post('/database', function(req,res,next){
      console.log(req.body, "req.solve" )

      connection.query('SELECT * FROM locations', function(err, result) {

        if(err){
            throw err;
        } else {
            obj = {print: result};
            res.render('viewDatabase', obj);                
        }
    });

  })



app.listen(8080,(req,res)=>{
    console.log('server running on port 8080')
})

location.ejs

<html>

<head>
  <title>Geolocation</title>

//code

</head>

<body>


  <!-- <div id="database" (click) = "Check Database"></div> -->

  <form method="post" action="/database" novalidate>
    <div class="form-field">
      <label for="location">Check Values in Database : </label>
      <!-- <input type="text" id="location" name="message" placeholder= "Location" rows="4" autofocus></input> -->
    </div>

    <div class="form-actions">
      <button class="btn" type="submit">Check Database</button>
    </div>
  </form>
  <br>
  <br>
  <form method = "post" action = "/saveInDatabase" novalidate>


  <div id="floating-panel" class = "form-field">
          <input id="address" type="textbox" value="Sydney, NSW">
        </div>
          <div class= "form-actions">
          <button id="submit" type="submit" value="Insert and View Location">Insert and View Location</button>
        </div>

      </form>
  <div id="map"></div>

  <script>


    // NEW CODE 
    function initMap() {
      var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 8,
        center: { lat: -34.397, lng: 150.644 }
      });
      var geocoder = new google.maps.Geocoder();

      document.getElementById('submit').addEventListener('click', function () {
        geocodeAddress(geocoder, map);
      });
    }

    function geocodeAddress(geocoder, resultsMap) {

       var address = document.getElementById('address').value;
      // var address = document.getElementById('events').innerHTML;

      //code
    }

  </script>
</body>

</html>




...