Articles of node.js

材料使用入门

对我来说,保守秘密就是material-ui,一个使用Google的Material Design UI和React的web框架。 我认为这是一个梦幻般的组合和未来。 但是,如何使用它也是一个保存完好的秘密。 http://material-ui.com/#/get-started上的入门指南不适用于普通的Joe,但仅适用于可以理解的一小部分人员。 而且,这里的问题,比如如何使用material-ui框架? , 材料ui安assembly置 ,从来没有回答过。 我设法安装了material-ui, $ npm install material-ui react-tap-event-plugin@0.1.6 node_modules/react-tap-event-plugin react@0.13.2 node_modules/react envify@3.4.0 (through@2.3.7, jstransform@10.1.0) material-ui@0.7.4 node_modules/material-ui classnames@1.2.1 react-draggable2@0.5.1 $ ls -d1 node_modules/* node_modules/material-ui node_modules/react node_modules/react-tap-event-plugin 但接下来呢? 我应该将它们移到我的/var/www/ ? 或者启动nodejs,或者…? 我怎样才能看到一个简单的演示,显示一切正在工作? 总而言之,作为一个只知道http服务器和静态html页面的人,对我来说,看到它的最简单方法是在我自己的环境中使用我现有的web服务器吗? 谢谢 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.10 Release: […]

SailsJS上的外键约束

这是我的大学模式 module.exports = { attributes: { name:{ type:'string', required:true }, location:{ type:'string', required:true }, faculties:{ collection:'faculty', via:'college' } } }; 这是我的师资模式 module.exports = { attributes: { name:{ type:'string', required:true }, description:{ type:'string' }, college:{ model:'college', required:true } , years:{ collection:'year', via:'faculty' } } }; 我的问题是,我可以添加新的Faculty在college属性中的任何价值。 如果我没有3000学分的大学,我仍然可以添加它,但college属性不会出现在我列出所有院系。 如何防止添加无效的大学ID教师?

两台服务器之间通信的最佳方式是什么?

我正在构build一个包含两个部分的Web应用程序。 其中一部分使用服务器和客户端之间的实时连接,另一部分使用一些cpu密集型任务来提供相关的数据。 在nodejs中实现实时通信,在python / java中实现cpu密集部分。 nodejs服务器可以参与与其他服务器的双工通信的最佳方式是什么?

简单的WebSocket应用程序与NodeJS

我要做一个简单的WebSocket应用程序等待客户端连接。 客户端将是Android用户,而应用程序本身就是两个人的简单聊天室。 所以对于Android应用程序,我需要知道WebSocket地址(以ws://或wss://开头)。 我已经有一些网站,我在那里安装nodejs。 但是几天之后,我完全停留在发生什么事以及如何使某件事情成功。 我甚至很高兴看到nodejs捕获任何WebSocket消息,就是这样。 我阅读了关于nodejs和socket.io的一些手册,并且我不知道在哪里得到这个ws://地址并使其工作。 例如,从socket.io聊天手册 ,我们有: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendfile('index.html'); }); io.on('connection', function(socket){ console.log('a user connected'); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 那已经是简单的websocket应用程序了吗? 在这种情况下,我所期望的ws://地址在哪里? 也许我应该只是上传一堆代码在我的服务器上,并发送查询ws://mydomain.com:3000 ?

MongoDB的。 如何更新数组内的json属性

我正在使用平均值堆栈。 我对此感到不舒服,并且陷入了一片腌制。 我见过使用set或push更新logging的例子,但是因为我试图更新一个json对象内的一个json对象,所以我遇到了麻烦。 考虑下面的模式 token: { type: String, required: "FB access token required." }, fbId: { type: String, required: "FB id required.", unique: true }, accounts: { type: Array, default: [] } 我的帐户数组由json对象组成,每个对象如下所示: { "name": "some name", "credentials": { "username": "some username", "password": "some password" } 每次用户添加新帐户时,我都会尝试更新帐户。 所以在这种情况下,我可以使用$推就好了。 但是我不想重复的名字,$ push在这里失败。 所以我尝试使用$ set,但是$ set不会将具有新名称的对象插入到帐户中。 所以我尝试使用upset:真正的$集,但现在我得到重复的错误。 这里是一个例子,我尝试在帐户中索引名称。 […]

如何确保在stream完成处理后执行asynchronous代码?

我有一个stream,通过侦听data , error和end事件来处理,我调用一个函数来处理第一个stream中的每个data事件。 当然,处理数据的函数会调用其他callback函数,使得它是asynchronous的。 那么当stream中的数据被处理时,我该如何开始执行更多的代码呢? 在stream中收听end事件并不意味着asynchronousdata处理function已经完成。 当我执行下一个语句时,如何确保stream数据处理函数完成? 这里是一个例子: function updateAccountStream (accountStream, callThisOnlyAfterAllAccountsAreMigrated) { var self = this; var promises = []; accountStream .on('data', function (account) { migrateAccount.bind(self)(account, finishMigration); }) .on('error', function (err) { return console.log(err); }) .on('end', function () { console.log("Finished updating account stream (but finishMigration is still running!!!)"); callThisOnlyAfterAllAccountsAreMigrated() // finishMigration is still running! […]

SSL握手使用node.js服务器

我目前正在尝试使用socket.io创build一个安全的连接,而现在我真的无法实现这一点。 试图检查我的证书是否是权利,我试图在nodeJS中创build一个基本的https服务器。 var fs = require('fs'); var certDir = "/path/to/the/certificates/cert-test/"; require("https").createServer( { key : fs.readFileSync(certDir + 'srv.key'), cert : fs.readFileSync(certDir + 'crt.pem'), }, function(request, response){ response.writeHeader(200, {"Content-Type": "text/plain"}); response.write("Hello World!\n"); response.end(); }).listen(8082).on('clientError', function(e){ console.log(e); }); 与http相当的工作正常,但这是不可能的工作。 我把节点版本升级到了v0.12.4,npm到2.11.0,https是1.0.0(更多查询,socket.io是1.3.5)。 服务器在AWS上,有一个bitnami实例,Ubuntu 12.04.5 LTS,内核版本为3.2.0-84-virtual,OpenSSL为1.0.1i。 我尝试通过https://node.inkive.com:8082 (在我的浏览器和curl中)访问服务器,但是我从来没有得到正确的握手。 服务器检测到以下错误: [Error:3074971392:error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher:../ deps / openssl / openssl / ssl / […]

Parse / Node.js,用户会话pipe理(javascript sdk)。 Parse.User.current()将不会持续

我正在尝试使用服务器端使用parse javascript SDK模块的自我托pipe的node.js服务器中的parseExpressCookieSession模块。 我按照这里find的说明设置服务器,以自动持久化Parse.User.current()对象中的用户会话。 但是,在成功login后,向Node.js服务器发出新请求时,Parse.User.current()对象始终为空。 附件是我的server.js文件的设置代码。 server.js: var express = require('express'); var app = express(); // create our app w/ express var morgan = require('morgan'); // log requests to the console (express4) var bodyParser = require('body-parser'); // pull information from HTML POST (express4) var methodOverride = require('method-override'); // simulate DELETE and PUT (express4) var logger […]

如何告诉Express不parsing请求的查询string?

我知道Express检查查询string(例如?a = 1&b = 2)并parsing它,如果默认情况下存在。 那req.query是包含键/值对的对象。 有没有办法禁用这种行为,并完全忽略qs? 我需要这个,因为我parsing查询string客户端,因为我收到了大量的请求和QS是相当长的我不想浪费服务器资源每次parsing查询string(这意味着Express将需要解码string中的URI组件,分割string,为每个键值对做一个for循环,为每一对执行另一个分割,创build一个新的对象,这非常昂贵)。 这可能吗?

mongoosesorting

我有sorting显示数据的问题。 这是我的查询, Activity.find({"user_id": sesUser._id}, {}, {offset: 0, limit : 5, sort:{createdAt:1}}, function (e,a){ … }); 我有关于252长度的数据,而我的最新数据是2015年6月9日。如果我使用这个查询,我只从2015年6月5日/上周数据获取数据,而不是获取最新数据,但是如果我不使用sorting,出现。 我已经使用下面的查询,但结果是一样的。 Activity.find({"user_id" : sesUser._id}).sort("createdAt").exec(function(err,a){ … }); 任何帮助? 我正在使用Mongoose v3 – 编辑 – 这是我的活动架构/模型 var mongoose = require('mongoose'); var Activity = mongoose.Schema({ sender_id : {type: String, required: true }, user_id : {type: String, required: true }, product_id : {type: String, […]