Articles of 表示

从PHP的angular度来看节点

我是一个多年来一直在构buildPHP Web应用程序的Web开发人员,总是没有框架并使用MVCdevise。 终于到了我转移到Node的时候了。 由于懒惰,我忽略了学习节点,但是有JavaScript的经验,一切似乎伟大的工作,内置模块是伟大的,乍一看事情似乎快得多的节点与PHP,horray节点! 问题是,我无法find任何资源来学习“正确”的方式来使用MVC布局您的Web应用程序,而不使用Express / Koa / Hapi等框架。 我确定这些都是非常棒的框架,并节省了大量的时间,但为了加快速度,我认为从头开始构build是件好事。 路由:用PHPbuild立一个方法是使用__autoload()来dynamic加载控制器,这是一个好的方法来devise节点中的路由器,还是使用地图或以不同的方式路由到正确的控制器? 内容:在PHP中,您可以很容易地将视图文件打印出控制器传递的variables,甚至可以在html中运行代码。 我明白,这不是节点的方式,但只有人见过使用模板引擎或在教程中,只是有HTMLvariables,这当然在现实世界中不起作用。 在节点中,可以简单地通过加载静态HTML视图文件并replace{TAGS}来编写模板引擎,还是有理由使用更高级的模板引擎? TL; DR为什么使用简单网站的框架而不是手动编码几个基本组件? 我错过了什么吗? 谢谢!

什么时候发送到客户端的静态中间件文件,使用node.js

我有点新的节点,我试图了解req,res系统和中间件。 通过使用这个代码: app.use('/stylesheets', express.static('stylesheets')) app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); 客户端请求页面时,是与index.html一起发送的外部css文档还是稍后客户端解释html文件时请求的? 希望它不是一个愚蠢的问题。

反应和表示不允许jsx的应用程序

我正在尝试学习如何使用快递制作networking应用程序,但是,我并不真正了解如何将数据发送到客户端,以及快递应该做什么。 我有一个印象,表示应该发送数据到客户端,然后客户端应该根据发送的数据显示UI。 现在我正在尝试使用reactDOMServer来显示一个反应组件,但是我遇到了一个jsx错误: res.send(ReactDOMServer.renderToString(<root />)) SyntaxError: Unexpected token < 我知道这篇文章,并试图安装babel的jsx,但它仍然给我这个错误。 这是我的app.js: const express = require("express") const React = require("react") const ReactDOMServer = require("react-dom/server"); const root = require("./public/root.js"); const app = express(); app.get("/", (req, res) => { res.send(ReactDOMServer.renderToString(<root />)) }) app.listen(3000, () => { console.log("running on port 3000") }) root.js const React = require("react"); module.export = […]

mongoosefindOne不工作如何我想要它

我正在制作一个应用程序,用户logging他们睡觉的小时数,他们的饮食习惯等,这些信息被存储在一个名为Journal的集合中。 当用户点击“统计信息”时,它会触发一个名为find()的函数,它查找用户提交的所有日志条目,并进行控制台日志logging。 这是我迄今为止: exports.stats = function(req, res) { function find() { Journal.findOne({'user': req.params.id}, 'sleep', function(err, journal){ if(err) throw err; console.log(journal.sleep); }); } find(); } 在这个例子中,我正在试图控制一个特定用户的睡眠小时数,但是它只显示该会话的睡眠小时数,而不是所有睡眠小时数

实现上传到单独的文件服务器的最佳方法?

所以我们有一个由node.js,express和mongodb组成的网页。 我在DMZ有2个服务器,没有join到AD中。 其中一台服务器将在网页上提供服务,另一台服务器将纯粹接收并提供video文件。 服务器正在运行iis和iisnode。 目前该页面正在使用MULTER上传文件,这对于上传到运行代码的相同服务器来说工作良好。 上传到单独的服务器被certificate是困难的,而我的谷歌search没有让我更接近解决scheme。 我希望上传和下载直接在客户端和video服务器之间,而不是通过networking服务器。 任何提示如何处理这个?

NodeJs:使用Express比较URL参数和删除请求与数组值

所以,我有这些快递路线的对象数组,并做了一些CRUD操作,但我卡在“删除”之一。 我想通过抓取它的url参数ID来删除一个对象,并检查它是否与它的键的值匹配。 一切似乎工作,除了两件事情: “文本”键可以是任何东西(不关心,如果它不在数组中)。 只要匹配现有的url,它就不需要匹配它自己的“文本”。 我知道我错过了一些参数,但经过一段时间的search,尝试了几个不同的东西,我似乎无法把它放在手指上。 我是编程新手,可能说得不好,但请耐心等待。 app.js var foodList = [ { id:'e3ed4we23', text:'honey' }, { id:'12312oi3i2', text:'milk' }, { id:'1023u2kodw', text:'chicken' }, { id:'213021381203', text:'eggs' } ]; app.delete('/food-list/delete/:ingredientId', function(req, res) { var removeIngredient = req.body.text; if(!removeIngredient || removeIngredient.length == 0) { console.log('Cannot remove this ingredient:', removeIngredient); res.status(500).send({error:'Cannot remove invalid ingredient text'}); }else { […]

如何使查询结果可以从所有页面访问

我试图能够通过一个variables传递给我的模板,我可以让它为单个页面工作,但我需要find一种方法来访问它的任何页面的结果。 原因是它是需要我的侧边栏是一个模板的一部分。 我的模板是 include header include sidebar content include footer 这只是sudo代码,显然不是我的实际代码。 我需要包括的查询是: Item.count({"author.id":req.user.id}, (err, itemCount)=>{ if(err){ console.log(err); } else { var Count = JSON.stringify(itemCount); // somehow I need to store Count to be accessible inside my sidebar } }); 我知道我可以把每个路由查询,但有没有办法,我可以做只有login的用户,并把它放在中间件或东西或sorting? 我现在把它存储在每个路由中,但我知道这不是DRY代码,更新它将是一个巨大的痛苦,因为我有超过50个我处理的路线。 我典型的路线是: // dashboard app.get('/dashboard', setRender('dashboard/index'), setRedirect({auth: '/login'}), isAuthenticated, (req, res, next) => { }, […]

节点JS:在res.render()之后的res.download()出错

我开始与节点JS,我得到一个错误: 错误:发送后无法设置标题。 你可以看到我的代码,问题是用res.download() ; 或者,如何在没有res.render()情况下显示视图? 你能告诉我如何解决这个问题? 谢谢! var express = require('express'); var app = express(); var pythonShell = require('python-shell'); app.set('view engine', 'ejs'); app.use(express.static('style')); app.post('/downloads', function(req, res) { res.render('downloads.ejs'); console.log("Python script begins"); pythonShell.run('./generator.py', function (err) { if (err) throw err; console.log("Python Script Ended"); res.download('mapCreated.tiff', 'map.tiff'); }); })

在快速应用程序之间共享会话(connect-mongodb)

所以我的最终目标是让多个节点应用程序连接到同一个数据库并在用户之间共享会话。 所以,如果你从一个应用程序注销,它会将你从所有的应用程序中注销,login也一样。所以这是在我的开发环境中工作。 我有两个节点快速应用程序连接到同一个Mongo会话数据库,所以我可以login到一个应用程序,另一个自动识别会话并login。我已经推送到我们的活CentOS服务器,并使用PM2和Nginx为它服务。 它目前正在为每个应用程序创build一个新的会话条目。 这两个应用程序使用相同的数据库会话和用户。 我可以在实时会话数据库中看到每个应用程序都有一个单独的会话。 因此,我必须立即login到每个应用程序,而不是一个。 这与Nginx有关,因为这在本地是有效的。 注意:我正在使用connect-mongodb会话 这是我的每个快速应用程序中的main.js文件(除端口#外都相同): var MongoDBStore = require('connect-mongodb-session')(express.session); var configDB = require('./config/database.js'); var env = require('./config/env.js'); if(env.location == 'test'){ var store = new MongoDBStore({ uri: configDB.sessions_url, collection: 'sess' }); }else if(env.location == 'live'){ var store = new MongoDBStore({ uri: configDB.sessions_url_live, collection: 'sess' }); } // Catch errors store.on('error', function(error) […]

如何在使用feathersjs响应NodeJs之前发送令牌jwt来validation?

我正在使用令牌jwt做pipe理仪表板。 我想用户只有login才能获得对中间件的访问权限。 我想这样做,如果他login,服务器显示主页,如果没有,然后他redirect到login页面。 下面是我的中间件index.js const auth = require('feathers-authentication'); const pupils = require('./pupils'); const login = require('./login'); const home = require('./home'); module.exports = function () { // Add your custom middleware here. Remember, that // in Express the order matters const app = this; // eslint-disable-line no-unused-vars app.use('/pupils.html', pupils()); app.use('/login.html', login()); app.use('/', home()); app.post('/login', auth.express.authenticate('local', { […]