Это ответ из двух частей, первая часть которого проходит по направлениям Github и заканчивается на шаге 19. Вторая часть содержит больше информации, которая не может вместиться в первую часть, и подробно начинается с шага 19. Мне придется добавить его к другому вопросу и связать с этим.
Вот Github
шаги, перечисленные по порядку. К вашему сведению, я сохранил исходные шаги в соответствии с тем, как они перечислены в исходном Github author
, но под каждым из них я разместил несколько подэтапов с подробными объяснениями и указаниями.
Предполагая, что вы уже создали проект Firebase
и получили файл GoogleService-Info.plist
Откройте файл GoogleService-Info.plist
. Следующие variables
из Github directions
коррелируют с GoogleService-Info.plist keys
-FB_NAME is the same thing as your PROJECT_ID
-FB_URL is the same thing as your DATABASE_URL
-FB_TOKEN is the same thing as your API_KEY
So
-if your PROJECT_ID is "sneakersearch-az12" then your FB_NAME is "sneakersearch-az12"
-if your DATABASE_URL is "https://sneakersearch-az12.firebaseio.com" then your FB_URL is "https://sneakersearch-az12.firebaseio.com"
-if your API_KEY is "0012abc789xyz00019" then your FB_TOKEN is "0012abc789xyz00019"
//These are not inside your GoogleService-Info.plist but you will encounter them later
-FB_SERVICEACCOUNT pertains to downloading a json file from the your project's Firebase console. You will need to go to the page SERVICE ACCOUNTS it's exp in step 3B
-clientEmail is the same thing as your Firebase Service Account. You get this from either the Unknown file or on your SERVICE ACCOUNTS page via the FB Console and it's exp in step 3D and 3B
-privateKey is the same thing as private_key but this key is NOT your API_KEY, it is a key that is inside the Unknown file from the SERVICE ACCOUNTS page. It looks something like: "-----BEGIN PRIVATE KEY-----\nCYchgacopuyvpc017246t124087t6hpUTYVPUSVDPUCHVEpcl889ljbsiugr4ygrphvuygpuy...mutli-lines...\n-----END PRIVATE KEY-----\n". Also exp in step 3B
Под каждым Github
шагом у меня есть комментарии, а затем указания. Внутри направлений, где я использую приведенные ниже значения, вы должны вместо этого использовать свой project's values
. Итак, для примеров шагов я буду использовать эти keys
и values
:
//GoogleService-Info.plist
PROJECT_ID---aka--FB_NAME: sneakersearch-az12
DATABASE_URL-aka--FB_URL: https://sneakersearch-az12.firebaseio.com
API_KEY------aka--FB_TOKEN: 0012abc789xyz00019
//FB Service Account info
Firebase service account--aka--clientEmail: [email protected] //this is auto generated for you once you've created your firebase project
//Heroku and Bonsai info
Heroku Instance Name--aka--Heroku App Name: sneakersearchinstanceAtoZ
BONASI_URL --aka--Bonsai Cluster URL: https://abc123a01:[email protected]
Модель данных Swift: (это будет соответствовать тому, что вы поместили в свой объект сопоставления на шаге 19)
class Sneakers: NSObject{
var sneakercondition: String?
var sneakername: String?
}
VC с путями к файлам, по которым я отправляю данные в Firebase, и searchSnkPath — это отдельный путь к файлу, по которому Bonsai будет выполнять поиск:
@IBOutlet weak var conditionTextField: UITextField!
@IBOutlet weak var nameTextField: UITextField!
var dbRef: FIRDatabaseReference!
let userID = FIRAuth.auth()?.currentUser?.uid
override func viewDidLoad() {
super.viewDidLoad()
self.dbRef = FIRDatabase.database().reference()
}
@IBAction func postDataButton(){
var dict = [String:AnyObject]()
dict.updateValue(conditionTextField.text!, forKey: "sneakercondition")
dict.updateValue(nameTextField.text!, forKey: "sneakername")
let idPath = self.dbRef.child("users").child(userID!).child("sneakersPath").childByAutoId()
//searches will run on this file path
let searchSnkPath = self.dbRef.child("searchSnkPath").childByAutoId()
idPath.updateChildValues(dict){
(err, ref) in
searchSnkPath.updateChildValues(dict)
}
}
}
Внутри FBDatabase
путь, где мои данные для поиска хранятся в root/searchSnkPath/autoID
, и он имеет 2 keys
с именами sneakercondition
и sneakername
, которые представляют данные. Путь, по которому я хочу получить результаты поиска, — root/searchSnkPath
.
root
|
@-users
| |
| @-userID
| |
| @-sneakersPath
| |
| @-autoID
| |-sneakercondition
| |-sneakername
@searchSnkPath
|
@-autoID
|-sneakercondition
|-sneakername
Если я хочу выполнить поиск в searchSnkPath
и запросить эти 2 keys
, то внутри файла config.js
я найду exports.paths
, а внутри там я бы установил информацию для поиска.
exports.paths = [
{
path : "https://sneakersearch-az12.firebaseio.com/searchSnkPath", //exp in Step 4
index: "firebase", //exp in Step 17
type : "sneakers", //exp in Step 19
fields: ['sneakercondition', 'sneakername'] //these are the specific keys to search on (exp in Step 4)
}
]
Шаг 4 охватывает все это
Важно после запуска git clone https://github.com/firebase/flashlight
(шаг 2A) вам нужно cd
в папку flashlight
(шаг 2B), так как ВСЕ шаги с этого момента происходят внутри папки flashlight
, а НЕ папка вашего основного проекта Xcode. Ничто не будет работать в папке вашего проекта Xcode, потому что в ней нет файла package.json
Часть 1 - шаги Github:
1•Установите и запустите ElasticSearch или добавьте сервис Bonsai через Heroku.
1.комментарии:
-Bonsai
будет добавлено на шаге 10
-Вам НУЖНО выполнить следующие шаги 1A-1E по порядку, прежде чем продолжить
1.направления:
1A. Загрузите и установите Node.js
с https://nodejs.org/en/download/
1B. Загрузите и установите Heroku Toolbelt
(он был переименован в Heroku CLI
) по адресу https://devcenter.heroku.com/articles/heroku-cli. К вашему сведению, я использовал установщик OS X, а не OS X Homebrew.
1C. После загрузки и установки Heroku Toolbelt/CLI
войдите на сайт Heroku.com и создайте учетную запись.
1D. После создания Heroku
учетной записи нет необходимости создавать новую Heroku App
. Вы сделаете это на шаге 9 с помощью командной строки. Это очень легко
1E. Откройте терминал и выполните: node -v
, чтобы узнать текущий node version
ваш пробег (например, вы получите v6.9.1
). На шаге 2D вам нужно будет убедиться, что версия оттуда соответствует этому выводу.
2• клон git https://github.com/firebase/flashlight
2.комментарии:
- Предположим, что проект Xcode находится на рабочем столе в папке с именем sneakerSearchFolder
.
-Внутри терминала вы cd
переходите в папку кроссовокSearchFolder- т.е. запускаете: cd Desktop/sneakerSearchFolder
-Оказавшись в папке crosserSearchFolder, вы clone
the github repo
перейдете по адресу https://github.com/firebase/flashlight.
-Важно Затем вы cd
переходите в папку flashlight
, т.е. запускаете: cd flashlight
- Вам понадобится node version
ваша работа в соответствии с https://devcenter.heroku.com/articles/deploying-nodejs
-run: node -v
чтобы получить то, что node version
работает внутри папки flashlight
(т.е. v6.9.1
) позже, когда вы сделаете Heroku instance
, вам понадобится это по ссылке devcenter.heroku
выше
- Теперь, когда вы находитесь внутри папки flashlight
, если node version
, который вы только что запустили, не соответствует версии из шага 1E, вам нужно будет обновить версию в папке фонарика, чтобы они совпадали. Обновление Node.js до последней версии Если обе версии совпадают, вы не беспокойтесь об этом
- Предполагая, что ваши версии узлов совпадают, откройте файл package.json
в папке flashlight
и добавьте объект "engines"
со значением ключа, равным node version
, который вы используете в настоящее время.
"engines": {
"node": "node_version_num_you_got_back_from_running_node -v"
}
2.направления:
2A. в терминале перейдите в любую папку, в которой находится ваш проект Xcode.
2B. пробег: git clone https://github.com/firebase/flashlight
2C. запуск: cd flashlight
2D. запуск: node -v
2E. Откройте папку flashlight
, затем откройте package.json
. Добавьте в файл следующее.
"engines": {
"node": "whatever_was_returned_from_Step_2D"
}
2E-пример. К вашему сведению, вот пример. Откройте package.json
и после "dependencies"
closing brace
добавьте его туда. ОБЯЗАТЕЛЬНО ДОБАВЬТЕ ЗАПЯТУЮ после закрывающей скобки. И не добавляйте "v" перед номером версии. Сохраните файл.
"dependencies": {
"JQDeferred": "~1.9.1",
"colors": "~0.6.2",
"elasticsearch": "^11.0.1",
"firebase": "^3.5.2"
},
"engines": {
"node": "6.9.1"
}
3•установка нпм
С этого момента очень важно, чтобы вы находились внутри папки flashlight
, а не в папке основного проекта, чтобы все работало, иначе вы получите ошибки
3.комментарии:
-Вы все еще должны быть в папке flashlight
- Войдите в Firebase
, в консоли вашего проекта FB перейдите к Project's Settings
(маленький круглый значок рядом с Overview
), в настройках проекта выберите SERVICE ACCOUNTS
, перейдите в раздел Firebase Admin SDK
. Есть 2 вещи, которые вы должны сделать здесь. 1. Найдите и скопируйте свой Firebase service account
, он выглядит так: [email protected] и 2. внизу страницы вам нужно будет нажать кнопку Generate New Private Key
, он загрузит Unknown file
, который вам нужно будет переименовать в service-account.json
. Если он называет файл чем-то другим, кроме Unknown
, просто переименуйте его в service-account.json
. После переименования файла перетащите его в папку flashlight
, потому что на шаге 4B FB_SERVICEACCOUNT
потребуется доступ к этому файлу оттуда. УБЕДИТЕСЬ, ЧТО ВЫ ПОМЕЩАЕТЕ ФАЙЛ ВНУТРИ FLASHLIGHT FOLDER
!
- Это не указано в шагах github, но это необходимо. Вы должны добавить Firebase Server SDK Credentials
в свой проект
- Вам нужно будет находиться в папке flashlight
, чтобы запустить команду $npm install firebase-admin --save
, иначе вы получите ошибки, потому что она будет искать файл packae.json
. Файл уже находится в вашей папке flashlight
, а не в папке основного проекта Xcode.
– Следуйте инструкциям на странице https://firebase.google.com/docs/server/setup внутри секции Initialize the SDK
. Вам понадобятся 2 значения из файла Unknown
(который теперь должен быть переименован в service-account.json
) для его инициализации. Значения находятся в строках 5-private_key
и 6-clientEmail
. К вашему сведению, clientEmail
и Firebase service account
это одно и то же.
-Вот кто ты initializing
внутри SDK
:
var admin = require("firebase-admin"); //this imports the npm firebase-admin module you just installed
admin.initializeApp({
credential: admin.credential.cert({
projectId: "<PROJECT_ID>", //projectId: is the PROJECT_ID from your GoogleService-Info.plist file
clientEmail: "foo@<PROJECT_ID>.iam.gserviceaccount.com", //clientEmail: is on line 6 in the Unknown file which is also your "Firebase service account" info
privateKey: "-----BEGIN PRIVATE KEY-----\n<KEY>\n-----END PRIVATE KEY-----\n" //privateKey: is NOT your API_KEY/FB_TOKEN. Inside the Unknown file on line 5 there is a very long multiline "private_key" key. It looks something like "-----BEGIN PRIVATE KEY-----\nCYchgacopuyvpc017tEpcl889ljbsiugr4ygrphvuygpuy...mutli-lines...\n-----END PRIVATE KEY-----\n". You need to copy and paste it from there to here. Be sure to include the "-----BEGIN PRIVATE KEY-----\n and \n-----END PRIVATE KEY-----\n
}),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com" //databaseURL: is the DATABASE_URL from your GoogleService-Info.plist file
});
-К вашему сведению, внутри раздела Initialize the SDK
у вас также есть возможность использовать верхнюю часть, где написано path/to/serviceAccountKey.json
, и вместо этого вы можете указать путь к переименованному неизвестному файлу. Я выбираю нижнюю часть inline
, так как она была проще. Если вы следуете этим шагам, вам не нужно беспокоиться об этом.
-Внутри папки flashlight
есть файл app.js
, скопируйте и вставьте приведенный выше код и поместите его вверху файла
- Вернитесь внутрь терминала в командной строке: npm install
-Если все в порядке, единственные предупреждения, которые у вас должны быть, это No repository field
и No license field
.
3.направления:
3А. Убедитесь, что внутри папки flashlight
запускается: pwd
3B. Войдите на страницу SERVICE ACCOUNTS
своего Firebase Console
и нажмите кнопку Generate New Private Key
, чтобы загрузить файл Unknown
.
3C. Переименуйте файл Unknown
в service-account.json
и поместите файл в папку flashlight
.
3D. Внутри файла service-account.json
скопируйте файл key
с именем client_email
или вы можете скопировать информацию сервисного аккаунта на свою страницу Firebase SERVICE ACCOUNTS
.
3E. Внутренний проход терминала: npm install firebase-admin --save
3F. Скопируйте содержимое раздела Initialize the SDK
и инициализируйте поля следующими значениями:
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert({
projectId: "sneakersearch-az12", //use your PROJECT_ID
clientEmail: "[email protected]", //clientEmail: is on line 6 in the Unknown file
privateKey: "-----BEGIN PRIVATE KEY-----\nCYchgacopuyvpc017tEpcl889ljbsiugr4ygrphvuygpuy...mutli-lines...\n-----END PRIVATE KEY-----\n" //privateKey: is on line 5 in the Unknown file
}),
databaseURL: "https://sneakersearch-az12.firebaseio.com" //use your DATABASE_URL
});
3G. В папке flashlight
откройте файл app.js
, вставьте/сохраните в него приведенный выше код с правильными значениями.
3 часа пробег: npm install
4•редактировать config.js (см. комментарии вверху, необходимо установить как минимум FB_URL и FB_SERVICEACCOUNT)
4.комментарии:
-В вашей папке flashlight
есть файл с именем config.example.js
, откройте его
- Внутри этого файла config.example.js
находятся переменные FB_URL
и FB_SERVICEACCOUNT
(они перечислены в строках 13 и 23).
- Вам нужно изменить exports.FB_URL = process.env.FB_URL || 'https://<YOUR APP>.firebaseio.com';
на exports.FB_URL = process.env.FB_URL || 'whatever_your_DATABASE_URL_is';
(обязательно поместите whatever_your_DATABASE_URL_is
в одинарные или двойные кавычки)
-в строке 23 exports.FB_SERVICEACCOUNT = process.env.FB_ACC || 'service-account.json';
используется для доступа к service-account.json file
из шага 3C (здесь нет необходимости что-либо добавлять или изменять, так как он будет обращаться к нему сам)
- Теперь вам нужно будет настроить путь, по которому находятся ваши данные (например, searchPath, используемый для отправки данных в FB внутри ViewController выше), индекс (шаг 17) и тип (аналогично вашей модели данных), которые вы хотите отслеживать в строках 64, 65 и 66.
exports.paths = [
{
path : "users",//line 64
index: "firebase",//line 65
type : "user"//line 66
},
-path
- это то место, где ваш data
находится внутри FB
. Это то место, откуда вы хотите получить результаты поиска, например <DATABASE_URL>/searchSnkPath
.
-index
опыт в шаге 17
-type
exp в шаге 19
-К сведению, строки 69-79 установят другой путь, который вы хотели бы отслеживать. Вы можете удалить или закомментировать их, если хотите. Вы также можете создать больше путей для мониторинга, т. Е. Если бы у вас был путь <DATABASE_URL>/searchClothingPath
, вы бы также настроили поиск по нему. Вы также можете добавить больше путей, если хотите, например:
exports.paths = [
{
path : "https://sneakersearch-az12.firebaseio.com/searchSnkPath"
index: "firebase",
type : "sneakers"
},
{
path : "<DATABASE_URL>/searchClothingPath"
index: "firebase",
type : "clothingDataModel",
fields: ['jeans','shirts']//completely optional to use
},
{
path : "<DATABASE_URL>/searchHatsPath"
index: "firebase",
type : "hatDataModel",
},
//etc...
-FYI Fields
— это keys
, которые будут проиндексированы в ES. Это необязательная вещь для добавления. Если бы у вас было 10 keys
и вы хотели, чтобы только 2 из них были indexed
, вы бы добавили это. Это означает, что из 10 ключей только 2 keys
будут доступны для поиска. Вы также можете использовать функции разбора внутри файла config.js
, чтобы сделать то же самое.
-После этого сохраните/закройте файл config.example.js
и переименуйте его в config.js
4.направления:
4A. Откройте файл config.example.js
и в строке 13 замените exports.FB_URL = process.env.FB_URL || 'https://<YOUR APP>.firebaseio.com';
на exports.FB_URL = process.env.FB_URL || 'https://sneakersearch-az12.firebaseio.com';
.
4B. Строка 23 используется для доступа к файлу service-account.json
(если вы переименовали Unknown file
на шаге 3C, просто продолжайте)
4C. Строки 64, 65, 66 — это то, что я хочу отслеживать, а в строке 67 я добавил fields key
для двух Firebase Database Keys
, по которым я хочу искать, хотя это и не обязательно.
exports.paths = [
{
path : "https://sneakersearch-az12.firebaseio.com/searchSnkPath",//line 64
index: "firebase",//line 65
type : "sneakers",//line 66
fields: ['sneakercondition', 'sneakername']//line 67
},
4D. Сохраните/закройте файл config.example.js
. Теперь переименуйте файл config.js
.
5• узел app.js (запустить приложение)
5.комментарии:
-Вы не будете выполнять эту команду до самого конца, так что пока пропустите ее, но есть кое-что, что вам следует знать. Запуск node app.js
запускает ваше приложение Heroku на вашем локальном компьютере. Он будет искать ElasticSearch локально, которого у вас нет, поэтому вы получите ошибки подключения. Если вы хотите запустить его локально, вам нужно будет запустить код export BONSAI_URL="<your_bonsai_url>"
на шаге 12B (необязательно), который необходим для устранения ошибок локального подключения. Если ваше приложение засыпает/вылетает (exp в конце), вам придется снова запустить команду export BONSAI_URL="<your_bonsai_url>"
. Кроме того, Heroku автоматически запускает приложение, когда вы загружаете в него код.
-На данный момент для этого шага вам нужно открыть файл app.js
и в соответствии с https://docs.bonsai.io/docs/nodejs добавить немного кода. Вы должны добавить код в любом месте после объявления var elasticsearch = require('elasticsearch')
.
/*
this code is already inside the app.js file. You should add the code anywhere below it
var elasticsearch = require('elasticsearch'),
conf = require('./config'),
fbutil = require('./lib/fbutil'),
PathMonitor = require('./lib/PathMonitor'),
SearchQueue = require('./lib/SearchQueue');
*/
//You need to add
var bonsai_url = process.env.BONSAI_URL;
var client = new elasticsearch.Client({
host: bonsai_url,
log: 'trace'
});
// Test the connection...
client.ping({
requestTimeout: 30000,
hello: "elasticsearch"
},
function (error) {
if (error) {
console.error('>>>My Bonsai url is>>>' + bonsai_url)
console.error('>>>Elasticsearch cluster is down!');
} else {
console.log('All is well');
}
}
);
- В инструкциях также сказано запускать $ export BONSAI_URL="https://username:[email protected]"
(другими словами export BONSAI_URL="<your_BONSAI_URL>"
), что вы должны делать ТОЛЬКО в том случае, если хотите запускать приложение локально для использования ES. Это не предназначено для удаленного
5.направления:
5. Откройте файл app.js
, добавьте приведенный ниже код и сохраните файл:
var bonsai_url = process.env.BONSAI_URL;
var client = new elasticsearch.Client({
host: bonsai_url,
log: 'trace'
});
// Test the connection...
client.ping({
requestTimeout: 30000,
hello: "elasticsearch"
},
function (error) {
if (error) {
console.error('>>>My Bonsai url is>>>' + bonsai_url)
console.error('>>>Elasticsearch cluster is down!');
} else {
console.log('All is well');
}
}
);
6•curl -X POST http://localhost:9200/firebase
6.комментариев:
-Пропустите этот шаг, потому что на данный момент у вас нет локального ES
на вашем процессоре для индексации.
6.направления:
6. ПРОПУСТИТЕ ЭТОТ ШАГ
7•cd фонарик
7.комментариев:
-Не нужно запускать это, вы все равно должны быть в папке flashlight
7.направления:
7. ПРОПУСТИТЕ ЭТОТ ШАГ
8• логин героку
8.комментарии:
-Открыть терминал
- Вам нужно будет ввести email address
и password.
вашего Heroku
. Когда вы вводите пароль, он будет отображаться пустым.
8.направления:
8А пробег: heroku login
8B. В ответ на приглашение введите свои email address
и password
для входа в Heroku.
9•heroku create (добавить героку в проект)
9.комментарии:
-Вот почему вам не нужно было создавать приложение heroku
на шаге 1D. Теперь вы создадите и назовете свое приложение heroku.
-После того, как вы введете create
, вам нужно ввести любое имя, которое вы хотите, чтобы имя вашего приложения heroku было. т.е. я выбираю имя sneakersearchinstanceAtoZ
-После того, как вы запустите эту команду, если вы войдете в Heroku
, вы должны увидеть имя приложения в списке. Перейдите в правый угол, нажмите 9 dots
, выберите Dashboard
9.направления:
9. пробег: heroku create sneakersearchinstanceAtoZ
10•heroku addons: добавить бонсай (установить бонсай)
10.комментариев:
- Вам нужно будет добавить credit card
в свою учетную запись Heroku
перед выполнением этого шага, иначе после его запуска будет сказано, что вы должны это сделать. Тем не менее, это все еще бесплатный план. Я не уверен, что вы можете добавить Bonsai add on
без карты
-Чтобы добавить кредитную карту, пройдите до конца справа, щелкните круглый значок, выберите Account Settings
, затем выберите Billing
.
-Теперь вам нужно добавить bonsai
к вашему heroku app
. Вы делаете это, запустив heroku addons:add bonsai --app <your-app-name>
-<your-app-name>
— это любое имя приложения heroku
, которое вы создали на шаге 9.
- после того, как вы создадите bonsai cluster
, он потребует, чтобы вы открыли кластер, запустив heroku addons:open bonsai
10.направлений:
10A. войдите в Heroku
и добавьте кредитную карту в Billing Page
10B. запуск: heroku addons:add bonsai --app sneakersearchinstanceAtoZ
//то же самое имя из шага 9
10C запустить heroku addons:open bonsai
11• Конфигурация героя (проверьте информацию об экземпляре бонсай и скопируйте новый BONSAI_URL, он понадобится вам позже)
11.комментариев:
-Запустив heroku config
, вы получите все ваши environment variables
и соответствующие им значения. Когда вы увидите свой bonsai's url
, скопируйте его значение, оно понадобится вам для шагов 12B и 17.
-Это тот же самый URL, который вы увидите на шаге 10C.
- bonsai url
может выглядеть как https://abc123a01:[email protected]
11.направлений:
11A. пробег: heroku config
11B. Скопируйте возвращаемый bonsai url
12• конфигурация героя: установить FB_NAME= FB_TOKEN="" (объявить переменные окружения)
12.комментариев:
-12A ТРЕБУЕТСЯ. Вам нужно использовать PROJECT_ID
вашего проекта GoogleService-Info.plist
, который является FB_NAME
, и API_KEY
, который является FB_TOKEN
для этого шага.
-12B не является обязательным. Если вы хотите подключиться к ElasticSearch
локально, запустите это. Вам нужно будет настроить bonsai url
так, чтобы запуск node app.js
не приводил к ошибкам подключения. Вы делаете это, запустив: export BONSAI_URL="<your_bonsai_url>"
. Вам нужно будет запускать эту команду для сеанса терминала или если ваше приложение Heroku засыпает/вылетает.
- Не используйте пробелы до или после знака равенства
12.направлений:
12A(ОБЯЗАТЕЛЬНО). запуск: heroku config:set FB_NAME=sneakersearch-az12 FB_TOKEN=0012abc789xyz00019
12B (необязательно).run: export BONSAI_URL="https://abc123a01:[email protected]"
13• git добавить config.js (обновление)
13.комментариев:
-Если вы запустите это, вы можете получить сообщение об ошибке: Следующие пути игнорируются одним из ваших файлов .gitignore: config.js Используйте -f, если вы действительно хотите их добавить.
-Он говорит запустить git add config.js
, а затем добавить -f
в конце
13.направлений:
13A. пробег: git add config.js
13B. Если есть ошибка, выполните: git add config.js -f
14•git commit -m "настроить бонсай"
14.направлений:
14. пробег: git commit -m "configure bonsai"
15•git push heroku master (развертывание на героку)
15.направлений:
15. пробег: git push heroku master
16•heroku ps:scale worker=1 (запуск динамометра)
16.комментариев:
- ответ на то, что делает эта команда, находится здесь Может кто-нибудь объяснить heroku ps:scale web =1а>
16.направлений:
16. пробег: heroku ps:scale worker=1
17•curl -X POST /firebase (пример: https://username:[email protected]/firebase)
17.комментариев:
-Перед тем, как начать этот шаг, прочитайте обновленный ответ @DoesData (ниже моих), чтобы использовать curl -X PUT вместо POST
-Возьмите bonsai url
, который вы скопировали из шага 11B.
-Вставьте URL-адрес после команды curl -X POST
и убедитесь, что вы добавили /firebase
в конец.
- что это делает, так это создает индекс с именем /firebase
, который указывает на ваш bonsai url
. Откройте файл config.js
и найдите exports.paths
(строка 62). У него есть пара ключ/значение с именем index: "firebase"
(строка 65), значение указывает на только что созданный индекс и оттуда обращается к кластеру ES.
- По сути, в вашем файле config.js в строке 65 значение index
firebase
должно точно соответствовать имени /firebase
, которое вы добавляете в конце команды curl -X POST
. Если имена не совпадают, ничего из этого не сработает.
- в случае успеха вы должны получить ответ: {"acknowledged":true}
17.направлений:
17. пробег: curl -X POST https://abc123a01:[email protected]/firebase
18• Пришло время использовать шаг 5 узла app.js (запустить приложение)
18.комментариев:
-запуск этой команды запустит приложение локально. Вы также можете запустить npm start
, но в любом случае он запустит его на вашем локальном компьютере, и вам нужно будет запустить код на шаге 12B (необязательно), чтобы это сработало.
18.направлений
18. пробег: node app.js
19• установите объект(ы) сопоставления
К вашему сведению, шаг 19 очень важен. Вы ДОЛЖНЫ установить свой ОБЪЕКТ MAPPINGS и его KEYS. У меня недостаточно символов, чтобы подробно объяснить это здесь. Это то, что использует ключ type
шага 4 для установки. Посмотрите это видео, чтобы объяснить, как настроить mappings object
: https://www.youtube.com/watch?v=h3i3pqwjtjA&feature=youtu.be
19.направлений:
19A. --откройте TextEdit
или Sublime
, затем создайте файл и назовите его sneakerfile.json
. Сохраните его и перетащите в папку flashlight
. Вам нужно расширение .json
.
19B. – В этот файл добавьте следующий код, сохраните и закройте файл:
{
"sneakers": {
"properties": {
"sneakercondition": {
"type": "string"
},
"sneakername": {
"type": "string"
}
}
}
}
//notice this is just like the Swift Sneakers Data Model declared at the beginning
19C. Пробегите BONSAI_URL
heroku config:get BONSAI_URL
. Мой BONSAI_URL: https://abc123a01:[email protected]
19D. пробег: curl -XPOST https://abc123a01:[email protected]/firebase/sneakers/_mapping [email protected]
19E. пробег: curl -XGET <BONASI_URL>/firebase/sneakers/_mapping?pretty
Выполнено с частью 1. Часть 2 подробно объяснит шаг 19
Дополнительная информация-
Команды Heroku:
Чтобы проверить свой dyno
запустить: heroku ps
Если вы получили следующее, перейдите по ссылкам ниже
=== web (Free): npm start (1)
web.1: crashed 2017/01/01 12:00:00 -0500 (~ 38m ago)
=== worker (Free): node ./app.js (1)
worker.1: crashed 2017/01/01 12:00:00 -0500 (~ 10m ago)
После создания вашего Heroku app
ваш dyno
находится под Heroku Free Plan
. В конечном итоге он будет fall asleep
/crash
, если он не используется в течение определенного периода времени. Чтобы остановить сон / сбой, следуйте
Простой способ предотвратить бездействие Heroku?
https://devcenter.heroku.com/articles/free-dyno-hours
https://devcenter.heroku.com/articles/dyno-sleeping
Другие команды:
heroku help //help
heroku status //Heroku platform status
heroku logs //displays 100 logs
heroku logs --tail //realtime logs
heroku logs --tail | grep worker //dyno worker logs
heroku ps -a <heroku app name> //how many dyno hrs you have left
heroku config:get BONSAI_URL //gets only your bonsai url
heroku config //all your environment variables
heroku apps:info //your Heroku credentials
Чтобы вернуться к command prompt
нажмите Ctrl+C
Вы также можете обратиться в службу поддержки Heroku или Bonsai, так как они очень полезны
Очень скоро я опубликую вторую часть.
person
Lance Samaria
schedule
20.01.2017