【オープンソース】Westore Cloudリリース-バックエンドなしSQLなしDBAなしjavascriptクラウドウィジェットの開発のみ
7325 ワード
Westore Cloud-ステルスクラウド、NoBackEnd、NoSql、HiddenDB
良いデザインはデザインの存在を感じない
開発ウィジェットですが、バックエンドはありません!運維がない!DBAはありません!ドメイン名がありません!証明書がありません.お金がない!元気がない!
大丈夫javascriptでいいわ
Github
https://github.com/dntzhang/westore
小プログラムクラウド開発の概要
開発者はクラウドを使って微信ウィジェット、ゲームを開発することができ、サーバーを構築する必要がなく、クラウド能力を使用することができる.
クラウド開発は開発者に完全なクラウドサポートを提供し、バックエンドとメンテナンス概念を弱め、サーバーを構築する必要がなく、プラットフォームが提供するAPIを使用して核心業務開発を行い、迅速なオンラインと反復を実現することができる.同時に、この能力は開発者がすでに使用しているクラウドサービスと互いに互換性があり、反発しない.
現在、3つのインフラストラクチャサポートを提供しています.クラウド関数:クラウドで実行されるコード、微信私有プロトコル天然認証、開発者は自分の業務論理コード を書くだけである.データベース:ウィジェットのフロントエンドでもクラウド関数でも読み書き可能なJSONデータベース ストレージ:ウィジェットのフロントエンドでクラウドファイルを直接アップロード/ダウンロードし、クラウド開発コンソールでの可視化管理 ウィジェットクラウドの詳細については、公式ドキュメントをクリックしてください.
Westore Cloudの概要
Westore Cloudは、小プログラムクラウドベースのデータベース能力で、開発者にデータベースの存在(ステルスクラウド)を感知させず、ローカルデータ、ローカルデータロジック、ローカルデータの流れに専念し、簡単なpull、push、add、removeを通じてローカルデータとクラウドデータベースを同期させる必要があります.データベース関連の公式ドキュメントはここをクリックできます.アーキテクチャ図は次のとおりです.
典型的なData Firstアーキテクチャ設計では、中小規模プロジェクトではModelsとAdapterの2つのモジュールを削除できます.Model firstのアーキテクチャと比較できます.
Model firstのアーキテクチャでは、ストレージを永続化する必要がなければ、Databaseを削除してModelsだけを残すことができます.Modelsはレンダリングとは関係なく、モデルの抽象とモデル間の論理に専念し、具体的にはWeb、アンドロイド、IOS、Flash、またはWPFがModelsの心配すべき質問に属していない.
Westore Cloudプロパティウィジェット直結データベース データベースデータ項目関数拡張 極めて簡単なAPI設計(pull push add remove) プログラミング言語(javascript)作成フロントエンド、バックエンド、mongodb のみ必要開発者はデータとデータの論理(store)に専念するだけで、ステルスなデータベース同期機能 遅延のない設計(ローカルリフレッシュビューを更新してからsync db、最後のdiffローカル更新ビューを更新する) クイックスタート
新規コレクション
マッピングストアの定義
上に作成したコレクション名をインストールしてstoreのdataを作成します.
上のenvはクラウドコンソールの環境IDに対応しています.
新しいテストデータ
addメソッドを使用して集合userにデータを追加します.
addメソッドを使用してコレクションproductにデータを追加します.
データベースの各メソッドの拡張
上記の拡張方法では、productテーブルの各項目を巡回する際に、ローカルの最初のデータを示すagentStringなどのagentStringプロパティを直接使用してビューにバインドできます.
データを引き出す
ビューへのデータのバインド
データの変更
高度なネストされたプロパティの正確な更新をサポートします.
更新後:
データの削除
新規データ
新しいエントリ・データが変更され、クラウド・データベースに同期する必要がある場合は、次のように設定します.id、すなわち最後の行のコードを次のように変更します.
完全なDEMOを追加するには、ここをクリックしてください.
API
this.store.pull(collectionName, [where])
クラウドデータベース集合のJSONデータを引き抜く
パラメータ
名前
オプション
を選択します.
説明
collectionName
なければならない
文字列
コレクション名
where
必要ない
JSON Object
18歳{age:18}などのクエリー条件
より多くのwhereのクエリー条件を構築するAPIは、ここをクリックすることができます.
戻り値
Promiseオブジェクトのインスタンスを返します.
≪インスタンス|Instance|emdw≫
18歳のユーザーを検索:
this.store.push()
ローカルJSONからクラウドデータベースへの同期
戻り値
Promiseオブジェクトのインスタンスを返します.
例
this.store.add(collectionName, data)
JSONデータをデータベースに追加
パラメータ
名前
オプション
を選択します.
説明
collectionName
なければならない
文字列
コレクション名
data
なければならない
JSON Object
データベースに追加されたデータ・アイテム
戻り値
Promiseオブジェクトのインスタンスを返します.
例
this.store.remove(collectionName, id)
idに基づいてデータベースのデータを削除する
パラメータ
名前
オプション
を選択します.
説明
collectionName
なければならない
文字列
コレクション名
id
なければならない
文字列
対応するデータベースで自動的に生成される_idフィールド
戻り値
Promiseオブジェクトのインスタンスを返します.
例
げんり
JSON Diff Resultデータベース更新要求への移行
戻り値:
ここで、「user-2」.split('-')の後にDBの集合名userが得られ、数字2はローカルデータの3番目の項目を表す.
Star & Fork
https://github.com/dntzhang/westore
License
MIT @dntzhang
良いデザインはデザインの存在を感じない
開発ウィジェットですが、バックエンドはありません!運維がない!DBAはありません!ドメイン名がありません!証明書がありません.お金がない!元気がない!
大丈夫javascriptでいいわ
Github
https://github.com/dntzhang/westore
小プログラムクラウド開発の概要
開発者はクラウドを使って微信ウィジェット、ゲームを開発することができ、サーバーを構築する必要がなく、クラウド能力を使用することができる.
クラウド開発は開発者に完全なクラウドサポートを提供し、バックエンドとメンテナンス概念を弱め、サーバーを構築する必要がなく、プラットフォームが提供するAPIを使用して核心業務開発を行い、迅速なオンラインと反復を実現することができる.同時に、この能力は開発者がすでに使用しているクラウドサービスと互いに互換性があり、反発しない.
現在、3つのインフラストラクチャサポートを提供しています.
Westore Cloudの概要
Westore Cloudは、小プログラムクラウドベースのデータベース能力で、開発者にデータベースの存在(ステルスクラウド)を感知させず、ローカルデータ、ローカルデータロジック、ローカルデータの流れに専念し、簡単なpull、push、add、removeを通じてローカルデータとクラウドデータベースを同期させる必要があります.データベース関連の公式ドキュメントはここをクリックできます.アーキテクチャ図は次のとおりです.
典型的なData Firstアーキテクチャ設計では、中小規模プロジェクトではModelsとAdapterの2つのモジュールを削除できます.Model firstのアーキテクチャと比較できます.
Model firstのアーキテクチャでは、ストレージを永続化する必要がなければ、Databaseを削除してModelsだけを残すことができます.Modelsはレンダリングとは関係なく、モデルの抽象とモデル間の論理に専念し、具体的にはWeb、アンドロイド、IOS、Flash、またはWPFがModelsの心配すべき質問に属していない.
Westore Cloudプロパティ
新規コレクション
マッピングストアの定義
上に作成したコレクション名をインストールしてstoreのdataを作成します.
export default {
data: {
//user db collectionName
'user': [],
// collection
'product': []
},
env:'test-06eb2e'
}
上のenvはクラウドコンソールの環境IDに対応しています.
新しいテストデータ
addメソッドを使用して集合userにデータを追加します.
this.store.add('user', {
name: 'dntzhang',
city: ' ',
age: 22,
gender: 1
}).then((res) => { })
addメソッドを使用してコレクションproductにデータを追加します.
this.store.add('product', {
address: {
province:' ',
city:' ',
},
agent: [ ' ', ' ', ' ']
})
データベースの各メソッドの拡張
export default {
data: {
'user':[],
'product': []
},
methods:{
// collection
'product':{
'agentString':function(){
//this.agent product agent
return this.agent.join('-')
}
}
},
env:'test-06eb2e'
}
上記の拡張方法では、productテーブルの各項目を巡回する際に、ローカルの最初のデータを示すagentStringなどのagentStringプロパティを直接使用してビューにバインドできます.
{{product[0].agentString}}
データを引き出す
this.store.pull('user').then(res => {
this.store.data.user = res.data
this.update()
})
ビューへのデータのバインド
:{{user[0].name}}
:{{user[0].age}}
:{{user[0].city}}
:{{user[0].gender===1?' ':' '}}
( )
:{{product[0].address.province}}
:{{product[0].address.city}}
:{{product[0].agentString}}
データの変更
this.store.data.user[0].name = 'dntzhang' + Math.floor(Math.random() * 100)
this.store.push().then((res) => {
console.log(' ')
})
push
メソッドはupdate local+update cloudに等しい.したがって、ローカルビューだけでなく、クラウドデータベースも同期して更新され、更新コールバックはthenで実行されます.高度なネストされたプロパティの正確な更新をサポートします.
this.store.data.product[0].address.city = ' '
this.store.data.product[0].agent[0] = ' '
this.store.data.product[0].agent[1] = 'QQ'
this.store.data.product[0].agent[2] = ' '
this.store.push()
更新後:
データの削除
const item = this.store.data.user.splice(index, 1)[0]
this.update() //
this.store.remove('user', item._id) //
新規データ
const user = {
name: 'new user' + this.store.data.user.length,
age: 1,
city: ' ',
gender: 2
}
this.store.data.user.push(user)
//
this.update()
//
this.store.add('user', user)
新しいエントリ・データが変更され、クラウド・データベースに同期する必要がある場合は、次のように設定します.id、すなわち最後の行のコードを次のように変更します.
this.store.add('user', user).then((res) => {
// _id, push
user._id = res._id
this.update()
})
完全なDEMOを追加するには、ここをクリックしてください.
API
this.store.pull(collectionName, [where])
クラウドデータベース集合のJSONデータを引き抜く
パラメータ
名前
オプション
を選択します.
説明
collectionName
なければならない
文字列
コレクション名
where
必要ない
JSON Object
18歳{age:18}などのクエリー条件
より多くのwhereのクエリー条件を構築するAPIは、ここをクリックすることができます.
戻り値
Promiseオブジェクトのインスタンスを返します.
≪インスタンス|Instance|emdw≫
18歳のユーザーを検索:
this.store.pull('user', {age: 18}).then(res => {
this.store.data.user = res.data
this.update()
})
this.store.push()
ローカルJSONからクラウドデータベースへの同期
戻り値
Promiseオブジェクトのインスタンスを返します.
例
this.store.data.user[0].name = 'dntzhang'
this.store.data.product[0].address.city = ' '
this.store.data.product[0].agent[1] = 'QQ'
this.store.data.product[0].agent[2] = ' '
this.store.push().then((res) => {
console.log(' !')
})
this.store.add(collectionName, data)
JSONデータをデータベースに追加
パラメータ
名前
オプション
を選択します.
説明
collectionName
なければならない
文字列
コレクション名
data
なければならない
JSON Object
データベースに追加されたデータ・アイテム
戻り値
Promiseオブジェクトのインスタンスを返します.
例
const user = {
name: 'new user' + this.store.data.user.length,
age: 1,
city: ' ',
gender: 2
}
this.store.data.user.push(user)
this.update()
this.store.add('user', user).then((res) => {
// _id
user._id = res._id
this.update()
})
this.store.remove(collectionName, id)
idに基づいてデータベースのデータを削除する
パラメータ
名前
オプション
を選択します.
説明
collectionName
なければならない
文字列
コレクション名
id
なければならない
文字列
対応するデータベースで自動的に生成される_idフィールド
戻り値
Promiseオブジェクトのインスタンスを返します.
例
const item = this.store.data.user.splice(index, 1)[0]
this.update()
this.store.remove('user', item._id)
げんり
JSON Diff Resultデータベース更新要求への移行
diffToPushObj({ 'user[2].name': { cc: 1 }, 'user[2].age': 13, 'user[1].a.b': { xxx: 1 } })
戻り値:
{ 'user-2': { 'name': { 'cc': 1 }, 'age': 13 }, 'user-1': { 'a': { 'b': { 'xxx': 1 } } } }
ここで、「user-2」.split('-')の後にDBの集合名userが得られ、数字2はローカルデータの3番目の項目を表す.
Star & Fork
https://github.com/dntzhang/westore
License
MIT @dntzhang