Wpis z mikrobloga

#nodejs

#expressjs

#node-geocoder

#serversidejs

#google

#geoapi

Place.schema.pre(


'save'





function
```**```
(next) {
``````
    
```**```
if
```**```
 (!
```**```
this
```**```
.location.lat) {
``````
            
```**```
var
```**```
 address = 
``````
                    
```**```
this
```**```
.location.street 
``````
                    + 
```_```
' '
```_```
 
``````
                    + 
```**```
this
```**```
.location.number 
``````
                    + 
```_```
', '
```_```
 
``````
                    + 
```**```
this
```**```
.location.city,
``````
            
``````
            geocoderProvider = 
```_```
'google'
```_```
,
``````
                httpAdapter = 
```_```
'https'
```_```
,
``````
                extra = {
``````
                    apiKey: 
```_```
'TylkoMirko!'
```_```
,
``````
                    formatter: 
```**```
null
```**```
                };
``````
                
```**```
var
```**```
 geocoder = require(
```_```
'node-geocoder'
```_```
).getGeocoder(geocoderProvider, httpAdapter, extra);                
``````
                
``````
                geocoder.geocode(address)
``````
                    .then(
```**```
function
```**```
(res) {
``````
                        console.log(res); // correct JSON
``````
                        console.log(JSON.parse(res)) // [SyntaxError: Unexpected token o]
``````
                    })
``````
                    .
```**```
catch
```**```
(
```**```
function
```**```
(err) {
``````
                        console.log(err);
``````
                    });
``````
    }
``````
    next();
``````
});

Macie pomysł, czemu tak? (problem zaznaczyłem w komentarzach :) ) Help! :)

#webdev #javascript
  • 7
@bezett:

// po co ja wczoraj piłem...

dobra, może inaczej: idąc za dokumentacją:

// output :

[{

latitude: 48.8698679,

longitude: 2.3072976,

country: 'France',

countryCode: 'FR',

city: 'Paris',

zipcode: '75008',

streetName: 'Champs-Élysées',

streetNumber: '29',

state: 'Île de France',

stateCode: 'IDF'

}]

ps. to prawda

jak mam wyciągnąć poszczególne wartości?
@npsr: najprościej chyba

geocoder.geocode(address)

.then(function(res) {

console.log(res[0].latitude);

})

.catch(function(err) {

console.log(err);

});

ofc warto by wcześniej sprawdzić, czy w res cokolwiek się znajduje :)
res[0].latitude


@bezett: Słowo klucz: zero ... i pewnie męczyłbym się z tym do wieczora, zanim bym o tym pomyślał ;P Dzięki wielkie :)

ofc warto by wcześniej sprawdzić, czy w res cokolwiek się znajduje :)


Wiem, wiem. W tym przypadku res=res?res:default ... mam nadzieję, ze dalej z górki. Jeszcze raz dzięki :)