// entity/user.js
var User = Class('User', {
Base: Class.Serializable({
activity: Date
}),
Validate: {
activity (date) {
if (date.getFullYear() !== new Date().getFullYear())
return 'Current year expected';
}
},
_id: null,
activity: null,
points: 0,
});
// client/user.js
Class.patch('User', {
Store: Class.Remote('/rest/user/:_id')
})
// server/user.js
Class.patch('User', {
Store: Class.MongoStore.Single('users', {
indexes: [ { date: 1} ]
})
});
// Browser OR NodeJS
var user = new User({
_id: 'foo',
activity: new Date
});
user.save().done(() => {});
//
user
.patch({
$inc: {
points: 2
}
})
.done(() => {})
//
User.fetch({ _id: 'foo' }).done(user => {});
User.fetch({ points: '>10' }).done(user => {});
// Server, http endpoint sample
module.exports = atma.server.Service({
'$post /' (req) {
var user = new User(req.body),
error = Class.validate(user);
if (error)
return this.reject(error);
user.save().pipe(this);
}
})
var SuperModule = require('SuperModule');
var start_ = SuperModule.prototype.start;
SuperModule.prototype.start = function(cb){
var fn = onceDelegate(cb);
this
.once('started', fn)
.once('error', fn)
;
start_.call(this);
};
function onceDelegate(fn) {
return function(){
var x_ = fn;
fn = null;
x_ && x_.apply(null, arguments);
};
}
// ИЛИ, если сделать более общим:
function callbackInjector(Ctor, method, events) {
var orig_ = Ctor.prototype[method];
Ctor.prototype[method] = function(){
var args = Array.prototype.slice.call(arguments),
cb = args.pop(),
listener = onceDelegate(cb),
imax = events.length,
i = -1
;
while(++i < imax) this.once(events[i], listener);
return orig_.apply(this, args);
}
};
callbackInjector(SuperModule, 'start', ['started', 'error']);
require('child_process').spawn('cmd', ['/C', 'node', 'tools/fetch.js']);
require('fs').utimesSync('index.js', new Date(), new Date());
var model1 = (new require('./test/model1'))();
self == model1 == model2 == global
var module = new (require('module'))();
// екзотические варианты -
var module = new require('module').prototype.constructor();
var module = new new require('module')();
$ npm install includejs -g
$ ijs import -files myfile.js -output done.js
# или так, все файлы в дериктории:
$ ijs import -files builds/*.js -output lib/
asyncFunction(args, function(error, result){})
auth.getUser(req, function(error,user) {
if (error != null){
handle(res,error);
return;
}
db.getData(function(error,data) {
if (error != null){
handle(res,error);
return;
}
res.write(template.render(data));
});