快速尝试了一下LoopBack(从环境搭建到API)+附带Unity的额外内容
LoopBack是什么?基于Node.js的开源BaaS(后端即服务),其功能包含用户管理、数据存储、Push通知等移动应用开发所需的基本功能相当齐全。作为其特点,具备自由性。由于是从API构建开始,因此可进行定制,并且在需要时可以编写服务器端处理。此外,还可通过插件选择存储数据的位置(如内存、SQLite、MongoDB等)。另外,由于IBM的收购,其作为开源BaaS享有较高知名度,相关文章也很多,非常有帮助。
因为上次已经写过这篇文章,所以你可以参考那篇。
现在Parse已经结束服务,选择的最佳方案是开源的BaaS!我一直在寻找的是LoopBack…!
利用现有环境macOS X Yosemite(本次在Mac上搭建)
Node.js 4.4.3
loopback 6.0.0
MongoDB v3.2.1
这次的发展由于环境搭建的过程很长,所以在这里总结一下:
1. 设置Node.js
2. 设置loopback
3. 设置MongoDB
4. 使用slc命令创建应用
5. 在LoopBack应用中安装MongoDB连接器
6. 启动Strong Arc
7. 配置应用的MongoDB
8. 创建模型
9. 调用API
10. 在MongoDB中进行确认
Node.js的安装设置下载Node.js(选择LTS版本)。
1. 设置Node.js
2. 设置loopback
3. 设置MongoDB
4. 使用slc命令创建应用
5. 在LoopBack应用中安装MongoDB连接器
6. 启动Strong Arc
7. 配置应用的MongoDB
8. 创建模型
9. 调用API
10. 在MongoDB中进行确认
Node.js的安装设置下载Node.js(选择LTS版本)。
确认Node.js的安装(显示版本号v4.4.3)。
node -v
环路的设置
sudo npm install -g loopback
sudo npm install -g strongloop
sudo npm install -g loopback
sudo npm install -g strongloop
通过查询 StrongLoop 命令(显示 strongloop v6.0.0 (node v4.2.4) 等信息)来确认。
slc -v
进行MongoDB的安装设置参考:为什么选择了MongoDB?
利用Home brew安装MongoDB(因为可能需要一些时间,所以可以休息一下)
brew install mongodb
安装完毕后确认版本(MongoDB shell版本为3.2.1)
mongo --version
启动mongo
mongod --config /usr/local/etc/mongod.conf
使用slc命令创建LoopBack应用程序。创建一个用于执行作业的目录,并将其移动。
slc loopback
slc loopback
因为这个中年男人问起应用程序的名字,所以这次我们用”sample”这个名字来创建应用程序。
_-----_
| | .--------------------------.
|--(o)--| | Let's create a LoopBack |
`---------´ | application! |
( _´U`_ ) '--------------------------'
/___A___\
| ~ |
__'.___.'__
´ ` |° ´ Y `
? What's the name of your application? sample
自动为您创建所需的文件。
在LoopBack应用程序中安装MongoDB连接器。在每个应用程序中设置LoopBack和MongoDB之间的连接器。
npm install loopback-connector-mongodb --save
启动强弧参考:Strong Arc是什么?有什么信息?
npm install loopback-connector-mongodb --save
请进入loopback应用程序的目录。
slc arc


应用程序中的MongoDB设置
将设置如下
設定例
名稱:sampledb
使用者名稱:user
主機:localhost
埠號:27017
資料庫:sampledb
連接器:MongoDB
点击“保存数据源”->“测试连接”。
如果成功就可以
创建 Model点击左侧的“新增模型”,进行以下设置。
设置示例
名称:书籍
复数形式:书籍
基本模型:持久模型
数据源:示例数据库
属性1:
名称:名称
类型:字符串
必需:勾选
属性2:
名称:价格
类型:数字
必需:勾选
请确认是否能够访问。返回的是空的 JSON。http://localhost:3000/api/books
调用API
数据注册使用curl命令发送POST数据以进行更新。
curl -H "Content-Type: application/json" -d '{"name":"BOOKNAME","price":100}' http://localhost:3000/api/books
确认注册数据当您访问以下链接时,将会返回一个JSON文件。
http://localhost:3000/api/books
[
{
"name":"BOOKNAME",
"price":100,
"id":"56b1d70aff16fe6887baae52"
}
]
使用Unity连接的示例代码用UnityWebRequest编写的
数据的注册
public IEnumerator PostBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Post (url, " ")) {
// ヘッダ
request.SetRequestHeader ("Content-Type", "application/json");
IDictionary requestBody = new Dictionary<string, object> ();
requestBody.Add ("name", "我輩は猫である");
requestBody.Add ("price", 280);
string bodyData = Json.Serialize (requestBody);
UploadHandler uploadHandler = new UploadHandlerRaw (System.Text.Encoding.UTF8.GetBytes (bodyData));
request.uploadHandler = uploadHandler;
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
获取数据
public IEnumerator GetBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Get (url)) {
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
查询MongoDB内的信息请确认数据是否已完全录入。
$ mongo
> show dbs //DB名の確認(sampledb)
> use sampledb //DBの使用
> show collections // コレクションの表示(book)
> db.book.find() // bookコレクションの全ドキュメント表示
补充完善
为什么选择MongoDB?国内的提供BaaS的有Kii Cloud、Nifty Cloud、Applery以及已宣布终止服务的Parse,它们都使用了MongoDB。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?在Strong Arc的右上方选择STOP来结束loopback应用程序。
获取Strong Arc的结束,并获取slc arc的进程ID并终止。
ps aux | grep node
kill -kill 123456(プロセスID)
创建API访问http://localhost:3000/explorer/,可以看到books提供的API的列表。
结束对于不及时完成某事,向对方道歉。非常抱歉。
由于我对MongoDB的了解还比较浅,如果有什么遗漏或错误的地方,我将会进行更新和修正。
下一篇文章将关于部署,点击这里查看。
在Sakura VPS(CentOS 6.7)上部署LoopBack应用程序。


名稱:sampledb
使用者名稱:user
主機:localhost
埠號:27017
資料庫:sampledb
連接器:MongoDB
点击“保存数据源”->“测试连接”。
如果成功就可以
创建 Model点击左侧的“新增模型”,进行以下设置。
设置示例
名称:书籍
复数形式:书籍
基本模型:持久模型
数据源:示例数据库
属性1:
名称:名称
类型:字符串
必需:勾选
属性2:
名称:价格
类型:数字
必需:勾选
请确认是否能够访问。返回的是空的 JSON。http://localhost:3000/api/books
调用API
数据注册使用curl命令发送POST数据以进行更新。
curl -H "Content-Type: application/json" -d '{"name":"BOOKNAME","price":100}' http://localhost:3000/api/books
确认注册数据当您访问以下链接时,将会返回一个JSON文件。
http://localhost:3000/api/books
[
{
"name":"BOOKNAME",
"price":100,
"id":"56b1d70aff16fe6887baae52"
}
]
使用Unity连接的示例代码用UnityWebRequest编写的
数据的注册
public IEnumerator PostBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Post (url, " ")) {
// ヘッダ
request.SetRequestHeader ("Content-Type", "application/json");
IDictionary requestBody = new Dictionary<string, object> ();
requestBody.Add ("name", "我輩は猫である");
requestBody.Add ("price", 280);
string bodyData = Json.Serialize (requestBody);
UploadHandler uploadHandler = new UploadHandlerRaw (System.Text.Encoding.UTF8.GetBytes (bodyData));
request.uploadHandler = uploadHandler;
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
获取数据
public IEnumerator GetBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Get (url)) {
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
查询MongoDB内的信息请确认数据是否已完全录入。
$ mongo
> show dbs //DB名の確認(sampledb)
> use sampledb //DBの使用
> show collections // コレクションの表示(book)
> db.book.find() // bookコレクションの全ドキュメント表示
补充完善
为什么选择MongoDB?国内的提供BaaS的有Kii Cloud、Nifty Cloud、Applery以及已宣布终止服务的Parse,它们都使用了MongoDB。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?在Strong Arc的右上方选择STOP来结束loopback应用程序。
获取Strong Arc的结束,并获取slc arc的进程ID并终止。
ps aux | grep node
kill -kill 123456(プロセスID)
创建API访问http://localhost:3000/explorer/,可以看到books提供的API的列表。
结束对于不及时完成某事,向对方道歉。非常抱歉。
由于我对MongoDB的了解还比较浅,如果有什么遗漏或错误的地方,我将会进行更新和修正。
下一篇文章将关于部署,点击这里查看。
在Sakura VPS(CentOS 6.7)上部署LoopBack应用程序。

名称:书籍
复数形式:书籍
基本模型:持久模型
数据源:示例数据库
属性1:
名称:名称
类型:字符串
必需:勾选
属性2:
名称:价格
类型:数字
必需:勾选
请确认是否能够访问。返回的是空的 JSON。http://localhost:3000/api/books
调用API
数据注册使用curl命令发送POST数据以进行更新。
curl -H "Content-Type: application/json" -d '{"name":"BOOKNAME","price":100}' http://localhost:3000/api/books
确认注册数据当您访问以下链接时,将会返回一个JSON文件。
http://localhost:3000/api/books
[
{
"name":"BOOKNAME",
"price":100,
"id":"56b1d70aff16fe6887baae52"
}
]
使用Unity连接的示例代码用UnityWebRequest编写的
数据的注册
public IEnumerator PostBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Post (url, " ")) {
// ヘッダ
request.SetRequestHeader ("Content-Type", "application/json");
IDictionary requestBody = new Dictionary<string, object> ();
requestBody.Add ("name", "我輩は猫である");
requestBody.Add ("price", 280);
string bodyData = Json.Serialize (requestBody);
UploadHandler uploadHandler = new UploadHandlerRaw (System.Text.Encoding.UTF8.GetBytes (bodyData));
request.uploadHandler = uploadHandler;
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
获取数据
public IEnumerator GetBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Get (url)) {
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
查询MongoDB内的信息请确认数据是否已完全录入。
$ mongo
> show dbs //DB名の確認(sampledb)
> use sampledb //DBの使用
> show collections // コレクションの表示(book)
> db.book.find() // bookコレクションの全ドキュメント表示
补充完善
为什么选择MongoDB?国内的提供BaaS的有Kii Cloud、Nifty Cloud、Applery以及已宣布终止服务的Parse,它们都使用了MongoDB。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?在Strong Arc的右上方选择STOP来结束loopback应用程序。
获取Strong Arc的结束,并获取slc arc的进程ID并终止。
ps aux | grep node
kill -kill 123456(プロセスID)
创建API访问http://localhost:3000/explorer/,可以看到books提供的API的列表。
结束对于不及时完成某事,向对方道歉。非常抱歉。
由于我对MongoDB的了解还比较浅,如果有什么遗漏或错误的地方,我将会进行更新和修正。
下一篇文章将关于部署,点击这里查看。
在Sakura VPS(CentOS 6.7)上部署LoopBack应用程序。

数据注册使用curl命令发送POST数据以进行更新。
curl -H "Content-Type: application/json" -d '{"name":"BOOKNAME","price":100}' http://localhost:3000/api/books
确认注册数据当您访问以下链接时,将会返回一个JSON文件。
http://localhost:3000/api/books
[
{
"name":"BOOKNAME",
"price":100,
"id":"56b1d70aff16fe6887baae52"
}
]
使用Unity连接的示例代码用UnityWebRequest编写的
数据的注册
public IEnumerator PostBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Post (url, " ")) {
// ヘッダ
request.SetRequestHeader ("Content-Type", "application/json");
IDictionary requestBody = new Dictionary<string, object> ();
requestBody.Add ("name", "我輩は猫である");
requestBody.Add ("price", 280);
string bodyData = Json.Serialize (requestBody);
UploadHandler uploadHandler = new UploadHandlerRaw (System.Text.Encoding.UTF8.GetBytes (bodyData));
request.uploadHandler = uploadHandler;
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
获取数据
public IEnumerator GetBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Get (url)) {
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
查询MongoDB内的信息请确认数据是否已完全录入。
$ mongo
> show dbs //DB名の確認(sampledb)
> use sampledb //DBの使用
> show collections // コレクションの表示(book)
> db.book.find() // bookコレクションの全ドキュメント表示
补充完善
为什么选择MongoDB?国内的提供BaaS的有Kii Cloud、Nifty Cloud、Applery以及已宣布终止服务的Parse,它们都使用了MongoDB。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?在Strong Arc的右上方选择STOP来结束loopback应用程序。
curl -H "Content-Type: application/json" -d '{"name":"BOOKNAME","price":100}' http://localhost:3000/api/books
http://localhost:3000/api/books
[
{
"name":"BOOKNAME",
"price":100,
"id":"56b1d70aff16fe6887baae52"
}
]
使用Unity连接的示例代码用UnityWebRequest编写的
数据的注册
public IEnumerator PostBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Post (url, " ")) {
// ヘッダ
request.SetRequestHeader ("Content-Type", "application/json");
IDictionary requestBody = new Dictionary<string, object> ();
requestBody.Add ("name", "我輩は猫である");
requestBody.Add ("price", 280);
string bodyData = Json.Serialize (requestBody);
UploadHandler uploadHandler = new UploadHandlerRaw (System.Text.Encoding.UTF8.GetBytes (bodyData));
request.uploadHandler = uploadHandler;
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
获取数据
public IEnumerator GetBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Get (url)) {
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
查询MongoDB内的信息请确认数据是否已完全录入。
$ mongo
> show dbs //DB名の確認(sampledb)
> use sampledb //DBの使用
> show collections // コレクションの表示(book)
> db.book.find() // bookコレクションの全ドキュメント表示
补充完善
为什么选择MongoDB?国内的提供BaaS的有Kii Cloud、Nifty Cloud、Applery以及已宣布终止服务的Parse,它们都使用了MongoDB。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?在Strong Arc的右上方选择STOP来结束loopback应用程序。
public IEnumerator PostBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Post (url, " ")) {
// ヘッダ
request.SetRequestHeader ("Content-Type", "application/json");
IDictionary requestBody = new Dictionary<string, object> ();
requestBody.Add ("name", "我輩は猫である");
requestBody.Add ("price", 280);
string bodyData = Json.Serialize (requestBody);
UploadHandler uploadHandler = new UploadHandlerRaw (System.Text.Encoding.UTF8.GetBytes (bodyData));
request.uploadHandler = uploadHandler;
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
获取数据
public IEnumerator GetBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Get (url)) {
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
查询MongoDB内的信息请确认数据是否已完全录入。
$ mongo
> show dbs //DB名の確認(sampledb)
> use sampledb //DBの使用
> show collections // コレクションの表示(book)
> db.book.find() // bookコレクションの全ドキュメント表示
补充完善
为什么选择MongoDB?国内的提供BaaS的有Kii Cloud、Nifty Cloud、Applery以及已宣布终止服务的Parse,它们都使用了MongoDB。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?在Strong Arc的右上方选择STOP来结束loopback应用程序。
public IEnumerator GetBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Get (url)) {
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
$ mongo
> show dbs //DB名の確認(sampledb)
> use sampledb //DBの使用
> show collections // コレクションの表示(book)
> db.book.find() // bookコレクションの全ドキュメント表示
补充完善
为什么选择MongoDB?国内的提供BaaS的有Kii Cloud、Nifty Cloud、Applery以及已宣布终止服务的Parse,它们都使用了MongoDB。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?在Strong Arc的右上方选择STOP来结束loopback应用程序。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?在Strong Arc的右上方选择STOP来结束loopback应用程序。
获取Strong Arc的结束,并获取slc arc的进程ID并终止。
ps aux | grep node
kill -kill 123456(プロセスID)
创建API访问http://localhost:3000/explorer/,可以看到books提供的API的列表。
结束对于不及时完成某事,向对方道歉。非常抱歉。
由于我对MongoDB的了解还比较浅,如果有什么遗漏或错误的地方,我将会进行更新和修正。
由于我对MongoDB的了解还比较浅,如果有什么遗漏或错误的地方,我将会进行更新和修正。
下一篇文章将关于部署,点击这里查看。
在Sakura VPS(CentOS 6.7)上部署LoopBack应用程序。