From 21d72c4a80fe2937d0c4ddd20624b27adbcd989b Mon Sep 17 00:00:00 2001 From: lizi00164331 Date: Mon, 7 Aug 2017 11:39:39 +0800 Subject: Upload the ESR GUI seed code Issue-ID: AAI-68 Change-Id: Ia50ce0570c2fabecd77199d4e8454f56fe587c4e Signed-off-by: lizi00164331 --- .../mongoose/examples/geospatial/geoJSONSchema.js | 22 +++++ .../mongoose/examples/geospatial/geoJSONexample.js | 56 ++++++++++++ .../mongoose/examples/geospatial/geospatial.js | 100 +++++++++++++++++++++ .../mongoose/examples/geospatial/package.json | 14 +++ .../mongoose/examples/geospatial/person.js | 27 ++++++ 5 files changed, 219 insertions(+) create mode 100644 common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geoJSONSchema.js create mode 100644 common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geoJSONexample.js create mode 100644 common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geospatial.js create mode 100644 common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/package.json create mode 100644 common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/person.js (limited to 'common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial') diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geoJSONSchema.js b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geoJSONSchema.js new file mode 100644 index 0000000..f950dea --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geoJSONSchema.js @@ -0,0 +1,22 @@ + +// import the necessary modules +var mongoose = require('../../lib'); +var Schema = mongoose.Schema; + +// create an export function to encapsulate the model creation +module.exports = function() { + // define schema + // NOTE : This object must conform *precisely* to the geoJSON specification + // you cannot embed a geoJSON doc inside a model or anything like that- IT + // MUST BE VANILLA + var LocationObject = new Schema({ + loc: { + type: {type: String}, + coordinates: [] + } + }); + // define the index + LocationObject.index({loc: '2dsphere'}); + + mongoose.model('Location', LocationObject); +}; diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geoJSONexample.js b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geoJSONexample.js new file mode 100644 index 0000000..8e5dd2b --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geoJSONexample.js @@ -0,0 +1,56 @@ +// import async to make control flow simplier +var async = require('async'); + +// import the rest of the normal stuff +var mongoose = require('../../lib'); + +require('./geoJSONSchema.js')(); + +var Location = mongoose.model('Location'); + +// define some dummy data +// note: the type can be Point, LineString, or Polygon +var data = [ + {loc: {type: 'Point', coordinates: [-20.0, 5.0]}}, + {loc: {type: 'Point', coordinates: [6.0, 10.0]}}, + {loc: {type: 'Point', coordinates: [34.0, -50.0]}}, + {loc: {type: 'Point', coordinates: [-100.0, 70.0]}}, + {loc: {type: 'Point', coordinates: [38.0, 38.0]}} +]; + + +mongoose.connect('mongodb://localhost/locations', function(err) { + if (err) { + throw err; + } + + Location.on('index', function(err) { + if (err) { + throw err; + } + // create all of the dummy locations + async.each(data, function(item, cb) { + Location.create(item, cb); + }, function(err) { + if (err) { + throw err; + } + // create the location we want to search for + var coords = {type: 'Point', coordinates: [-5, 5]}; + // search for it + Location.find({loc: {$near: coords}}).limit(1).exec(function(err, res) { + if (err) { + throw err; + } + console.log('Closest to %s is %s', JSON.stringify(coords), res); + cleanup(); + }); + }); + }); +}); + +function cleanup() { + Location.remove(function() { + mongoose.disconnect(); + }); +} diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geospatial.js b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geospatial.js new file mode 100644 index 0000000..3ff8c0b --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/geospatial.js @@ -0,0 +1,100 @@ +// import async to make control flow simplier +var async = require('async'); + +// import the rest of the normal stuff +var mongoose = require('../../lib'); + +require('./person.js')(); + +var Person = mongoose.model('Person'); + +// define some dummy data +var data = [ + { + name: 'bill', + age: 25, + birthday: new Date().setFullYear((new Date().getFullYear() - 25)), + gender: 'Male', + likes: ['movies', 'games', 'dogs'], + loc: [0, 0] + }, + { + name: 'mary', + age: 30, + birthday: new Date().setFullYear((new Date().getFullYear() - 30)), + gender: 'Female', + likes: ['movies', 'birds', 'cats'], + loc: [1, 1] + }, + { + name: 'bob', + age: 21, + birthday: new Date().setFullYear((new Date().getFullYear() - 21)), + gender: 'Male', + likes: ['tv', 'games', 'rabbits'], + loc: [3, 3] + }, + { + name: 'lilly', + age: 26, + birthday: new Date().setFullYear((new Date().getFullYear() - 26)), + gender: 'Female', + likes: ['books', 'cats', 'dogs'], + loc: [6, 6] + }, + { + name: 'alucard', + age: 1000, + birthday: new Date().setFullYear((new Date().getFullYear() - 1000)), + gender: 'Male', + likes: ['glasses', 'wine', 'the night'], + loc: [10, 10] + } +]; + + +mongoose.connect('mongodb://localhost/persons', function(err) { + if (err) { + throw err; + } + + // create all of the dummy people + async.each(data, function(item, cb) { + Person.create(item, cb); + }, function(err) { + if (err) { + // handler error + } + + // let's find the closest person to bob + Person.find({name: 'bob'}, function(err, res) { + if (err) { + throw err; + } + + res[0].findClosest(function(err, closest) { + if (err) { + throw err; + } + + console.log('%s is closest to %s', res[0].name, closest); + + + // we can also just query straight off of the model. For more + // information about geospatial queries and indexes, see + // http://docs.mongodb.org/manual/applications/geospatial-indexes/ + var coords = [7, 7]; + Person.find({loc: {$nearSphere: coords}}).limit(1).exec(function(err, res) { + console.log('Closest to %s is %s', coords, res); + cleanup(); + }); + }); + }); + }); +}); + +function cleanup() { + Person.remove(function() { + mongoose.disconnect(); + }); +} diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/package.json b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/package.json new file mode 100644 index 0000000..75c2a0e --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/package.json @@ -0,0 +1,14 @@ +{ + "name": "geospatial-example", + "private": "true", + "version": "0.0.0", + "description": "deps for geospatial example", + "main": "geospatial.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": { "async": "*" }, + "repository": "", + "author": "", + "license": "BSD" +} diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/person.js b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/person.js new file mode 100644 index 0000000..e816637 --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/geospatial/person.js @@ -0,0 +1,27 @@ +// import the necessary modules +var mongoose = require('../../lib'); +var Schema = mongoose.Schema; + +// create an export function to encapsulate the model creation +module.exports = function() { + // define schema + var PersonSchema = new Schema({ + name: String, + age: Number, + birthday: Date, + gender: String, + likes: [String], + // define the geospatial field + loc: {type: [Number], index: '2d'} + }); + + // define a method to find the closest person + PersonSchema.methods.findClosest = function(cb) { + return this.model('Person').find({ + loc: {$nearSphere: this.loc}, + name: {$ne: this.name} + }).limit(1).exec(cb); + }; + + mongoose.model('Person', PersonSchema); +}; -- cgit 1.2.3-korg