Если вы хотите быть уверенным в своей квоте, вы можете получить ключ API Карт Google , а затем использовать его в моем googleway
пакете
library(googleway)
key <- "your_api_key"
google_geocode(address = "Paris", key = key)
# $results
# address_components
# 1 Paris, Paris, Île-de-France, France, Paris, Paris, Île-de-France, FR, locality, political, administrative_area_level_2, political, administrative_area_level_1, political, country, political
# 2 Paris, Lamar County, Texas, United States, Paris, Lamar County, TX, US, locality, political, administrative_area_level_2, political, administrative_area_level_1, political, country, political
# formatted_address geometry.bounds.northeast.lat geometry.bounds.northeast.lng geometry.bounds.southwest.lat
# 1 Paris, France 48.90214 2.469921 48.81557
# 2 Paris, TX, USA 33.73838 -95.435455 33.61185
# geometry.bounds.southwest.lng geometry.location.lat geometry.location.lng geometry.location_type
# 1 2.225193 48.85661 2.352222 APPROXIMATE
# 2 -95.627928 33.66094 -95.555513 APPROXIMATE
# geometry.viewport.northeast.lat geometry.viewport.northeast.lng geometry.viewport.southwest.lat geometry.viewport.southwest.lng
# 1 48.90214 2.469921 48.81557 2.225193
# 2 33.73838 -95.435455 33.61185 -95.627928
# place_id types
# 1 ChIJD7fiBh9u5kcRYJSMaMOCCwQ locality, political
# 2 ChIJmysnFgZYSoYRSfPTL2YJuck locality, political
#
# $status
# [1] "OK"
Для таких случаев, когда вам нужен простой объект JS вместо экземпляра полной модели, вы можете вызвать lean()
в цепочке запросов так:
Survey.findById(req.params.id).lean().exec(function(err, data){
var len = data.survey_questions.length;
var counter = 0;
_.each(data.survey_questions, function(sq){
Question.findById(sq.question, function(err, q){
sq.question = q;
if(++counter == len) {
res.send(data);
}
});
});
});
Этот способ data
уже является простым JS-объектом, с которым вы можете манипулировать, как вам нужно.
Я думаю, что документация Mongoose не делает этого достаточно ясным, но данные, возвращенные в запросе (хотя вы можете res.send () это) на самом деле объект Mongoose Document, а НЕ объект JSON. Но вы можете исправить это одной строкой ...
Survey.findById(req.params.id, function(err, data){
var len = data.survey_questions.length;
var counter = 0;
var data = data.toJSON(); //turns it into JSON YAY!
_.each(data.survey_questions, function(sq){
Question.findById(sq.question, function(err, q){
sq.question = q;
if(++counter == len) {
res.send(data);
}
});
});
});
toObject()
, что делает то же, что и toJSON()
, но с менее запутанным именем.
– JohnnyHK
31 May 2015 в 14:35
TypeError: data.toObject is not a function
Я получил это, то же самое с toJSON
– Luzan Baral
23 May 2018 в 11:05
findOne
я могу просто изменить объект, а затем вызватьdata.save()
, который, кажется, работает просто отлично (я добавляю к массиву) – developius 8 February 2016 в 21:38aggregate
вместо простогоfind
? – Fizzix 1 June 2016 в 00:04aggregate
всегда дает свои результаты как простые объекты, поэтому нет необходимости вlean()
. – JohnnyHK 1 June 2016 в 03:59