如何使用websockets制作粗糙的应用程序?

我想用socketio做一个快速的应用程序,一个简单的crud应用程序,但实时 socket.on('users:create',function(data){ console.log(data); salt = cryptom.salt(32); hash = cryptom.hash(data.pass,salt); u = new user({ name: data.name, salt: salt, hash: hash, email: data.email, ci: data.ci, telf: data.telf, rif: data.rif, }); u.save(function (err) { if(err){ console.log(err); }else{ user.find({},function(err,user){ io.sockets.emit('users:index',user); }); }}); }) 我想知道这是否正确,如果是有效的通过websockets发送所有的信息。

如何在不使用模式configuration参数的情况下使用mongoose在MongoDB模式实例化中的关联数组/对象中执行foreach?

一直谷歌search几个小时,并不能真正find一个坚实的答案。 也许我使用了错误的search参数? 反正我在这里: 我是MongoDB的新手,并试图在保存之前更改模式实例化的值。 我知道有很多使用“保存”中间件的post,但我不认为这将解决我的问题。 我有这样的模式devise: var fooSchema = new mongoose.Schema({ data:{ type1: { objectfoo: [], objectbar: [] }; type2: { objectxxx: [], objectyyy: [] }; } }); 这不是一个无限的对象,所以我不想做喜欢的东西,如链接到另一个架构或集合。 我想做一些事情: for(i in data){ for(j in data[i]){ data[i][j].push(val); } } 但是,它会给我一个“未定义的错误”,或者说,对象不存在,并出错。 我在第一个for循环中做了一个console.log ,事实certificate,不仅for(… in …)select数据字段,而且还select模式实例化中的configuration字段,如: $__delta $__version increment $__where remove model $__buildDoc init $__storeShard toJSON [Function] […]

带有节点mongo本地GridFS检测错误的New Relic

当我NewRelic= require('newrelic'); 并执行 var NewRelic= require('newrelic'), mongo_native = require('mongodb'), Express= require('express'), http= require('http'); GridStore = mongo_native.GridStore; process.on('uncaughtException', function(err) { console.log('Uncaught Exception', err); }); mongo_native.connect(mongoLabUri, {}, function(err, db){ var app= Express(); var server= http.createServer(app).listen(5009, function(err){ console.log('listening on 6000, err:',err); app.get('/', function(){ console.log('received request to /'); var gs = new GridStore(db, 'RandomFileName'+Math.random(), "w" ); console.log('initalized gridstore'); gs.open(function(err, […]

与PostgreSQL的Sequelize中的外键约束丰富的自联想

我在PostgreSQL中使用SequelizeJS .. 我有一个桌子units 。 我想要一个表unit_relations与列unit1_id , unit2_id , type 。 unit1_id和unit2_id都应该具有对units.id外键约束,以便任何时候单元被删除时,引用该单元的unit_relations任何行(作为unit1或unit2 )也将被删除。 在Sequelize中,我想将unit2映射到Relation ,将unit1映射到ReverseRelation ; 例如行 单位unit_relations ———— + ————— ———- + ———- + ——- relation_id | reverce_rel_id unit1_id | unit2_id | types ———— + ————— ———- + ———- + ——– | 11 | 43 | 亲 将由unit1.getRelations()和unit2.getReverseRelations() 。 我很难得到Sequelize尊重我的列名称(它想要使用relation_id和reverse_relation_id )或创build外键。

我如何链接与Q的嵌套承诺? 我无法让他们按照正确的顺序运行

我希望能够链接自己可能包括链式方法的方法。 日志应该是“第一,第二,第三”。 但实际上却是“第二,第三,第一”。 我知道这个代码有点多余,但我只是想了解promises / node如何执行。 我将如何编写可以链接在一起的基于承诺的函数? user.increaseReadings(id) .then(function(val) { console.log("second",val); return user.findById(id); }) .then(function(val) { console.log("third",val); res.json(val); }); } 从/models/user模块: exports.findById = findById; function findById(id) { deferred = Q.defer(); User.findById(id, function(err, doc) { if (err) return deferred.reject(err); deferred.resolve(doc); }); return deferred.promise; } exports.increaseReadings = increaseReadings; function increaseReadings(id) { deferred = Q.defer(); findById(id).then(function(doc) { <– […]

用Mongoskin插入多个文档到MongoDB中

我试图通过一个循环插入几个文档,但是我遇到了ObjecId的唯一性问题。 我有这个function: // Fetch all client documents. db.collection('clients').find({}, {cost: 1}).toArray(function(err, dbDocs) { if (err) throw err; // Set up a general doc. var currentTime = new Date(); var doc = { year: currentTime.getFullYear(), quarter: Math.floor(currentTime.getMonth() / 3) + 1, paid: false }; // For each client document, insert a document to invoices collection. for (var […]

垃圾收集器何时释放“请求”对象?

var http = require('http'); function createRequest() { var options = {}; var request = http.request(options, function(response) {}); request.end(); } createRequest(); 上面是一个小的Node.js片段。 http.request的返回值是http.request的一个实例,存储在函数createRequest的本地variablesrequest 。 片段是一个更大的应用程序的一部分,可以对createRequest多次调用。 我很困惑,这些实例何时通过Node.js中收集的http.request调用垃圾返回。

节点JS获取停止工作随机

我正在做一个简单的获取请求,但在10个左右的请求后,它停止工作。 在我的本地和生产服务器上是一样的。 一旦发生所有后续的Get请求失败,直到节点重新启动。 奇怪的是我不能一直重现这个问题。 它来了,去。 我知道我几乎没有任何信息,但我不知道该说什么。 有没有人有这样的问题? var options = { host: 'localhost', port: 80, path: '/first/second/' + data.uid, agent: false } console.log('just before get'); http.get(options, function(res) { res.on('data', function() {}); io.sockets.emit('load new ' + data.uid, {status: 3}); console.log(res.statusCode); })

将yeoman node.js应用程序部署到Elastic Beanstalk

我有一个使用Yeoman生成器开发的NodeJS应用程序,我试图将其部署到Elastic Beanstalk实例。 我对这个堆栈相当陌生,所以如果这个问题似乎分散,我很抱歉。 我能够使用这个过程来部署我的应用程序: http : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html 。 但是,当我打开我的主页时,我只有一个空白的Node应用程序。 我猜这是因为部署来自我的Git仓库,我的Grunt构build过程尚未运行。 有没有什么办法告诉Elastic Beanstalk在收到可部署后运行Grunt构build?

使用节点的作用域http客户端的选项,将rejectUnauthorized设置为false

使用节点的HTTP库,我可以轻松设置我想要的选项 options = port: 443 path: "/" method: 'GET' rejectUnauthorized: false https.get options, (res) -> … 我如何做node-scoped-http-client的同样的事情? # Passing options doesn't seem to work (defined as above) cli = msg.http(stats_url, options) # Injecting it doesn't pass it on either cli.options['rejectUnauthorized'] = false 我仍然得到这个错误: ERROR Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE 我在这里错过了什么吗? 我对node和coffeescript相当陌生。