Files
RootPanel/core/db.coffee
2014-04-14 00:40:40 +08:00

71 lines
1.9 KiB
CoffeeScript

MongoClient = (require 'mongodb').MongoClient
ObjectID = require('mongodb').ObjectID
_ = require 'underscore'
config = (require './config').db
exports.connect = (callback = null)->
#url = "mongodb://#{config.user}:#{config.passwd}@#{config.server}/#{config.name}"
url = "mongodb://#{config.server}/#{config.name}"
MongoClient.connect url, {}, (err, db) ->
throw err if err
exports.mongo = db
callback(db) if callback
exports.collection = (name) ->
return exports.mongo.collection name
exports.ObjectID = (id) ->
return new ObjectID id
exports.buildModel = (that, mongo) ->
that.find = (selector, options, callback) ->
mongo.find selector, options, (err, cursor) ->
throw err if err
cursor.toArray (err, result) ->
throw err if err
callback result
that.findOne = (selector, options, callback) ->
mongo.findOne selector, options, (err, result) ->
throw err if err
callback result
that.findId = (id, callback) ->
if _.isString id
id = exports.ObjectID id
mongo.findOne
_id: id
, (err, result) ->
throw err if err
callback result
that.update = (selector, documents, options, callback = null) ->
mongo.update selector, documents, options, (err, result) ->
throw err if err
callback result if callback
that.insert = (data, options, callback = null) ->
mongo.insert data, options, (err, result) ->
if _.isArray data
callback result
else
callback result[0]
that.remove = (selector, options, callback = null) ->
mongo.remove selector, options, (err, result) ->
throw err if err
callback result if callback
exports.buildByXXOO = (xxoo, mongo) ->
return (value, callback) ->
selector = {}
selector[xxoo] = value
mongo.findOne selector, (err, result) ->
throw err if err
callback result