| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- // Copyright 2015 The MemDB Authors.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- // implied. See the License for the specific language governing
- // permissions and limitations under the License. See the AUTHORS file
- // for names of contributors.
- 'use strict';
- // Add the following index config in memdb.conf.js and restart memdbcluster
- //
- // collections : {
- // player : {
- // indexes : [
- // {
- // keys : ['areaId'],
- // valueIgnore : {
- // areaId : ['', -1],
- // },
- // },
- // {
- // keys : ['deviceType', 'deviceId'],
- // unique : true,
- // },
- // ]
- // }
- // },
- // npm install memdb-client
- // run with node >= 0.12 with --harmony option
- // We assume you have started shard 's1' on localhost:31017
- var memdb = require('memdb-client');
- var P = memdb.Promise;
- var mdbgoose = memdb.goose;
- // Define player schema
- var playerSchema = new mdbgoose.Schema({
- _id : String,
- name : String,
- areaId : Number,
- deviceType : Number,
- deviceId : String,
- items : [mdbgoose.SchemaTypes.Mixed],
- }, {collection : 'player'});
- // Define player model
- var Player = mdbgoose.model('player', playerSchema);
- var main = P.coroutine(function*(){
- // Connect to memdb
- yield mdbgoose.connectAsync({
- shards : { // specify all shards here
- s1 : {host : '127.0.0.1', port: 31017},
- s2 : {host : '127.0.0.1', port: 31018},
- }
- });
- // Make a transaction in s1
- yield mdbgoose.transactionAsync(P.coroutine(function*(){
- var player = new Player({
- _id : 'p1',
- name: 'rain',
- areaId : 1,
- deviceType : 1,
- deviceId : 'id1',
- items : [],
- });
- // insert a player
- yield player.saveAsync();
- // find player by id
- var doc = yield Player.findByIdAsync('p1');
- console.log('%j', doc);
- // find player by areaId, return array of players
- var docs = yield Player.findAsync({areaId : 1});
- console.log('%j', docs);
- // find player by deviceType and deviceId
- player = yield Player.findOneAsync({deviceType : 1, deviceId : 'id1'});
- // update player
- player.areaId = 2;
- yield player.saveAsync();
- // remove the player
- yield player.removeAsync();
- }), 's1');
- });
- if (require.main === module) {
- main().finally(process.exit);
- }
|