Tag: expression

Express.JSpath问题与句柄

事情是。 “应用程序”文件夹是我的节点的逻辑坐落在那里,你可以find视图文件夹,模板的句柄(快速句柄)。 在“config”文件夹中,有一个express.js文件,其中实际需要express软件包,并且还设置了app引擎和variables: line 1: app.engine('handlebars', handlebars.engine); line 2: app.set('views', path.join(__dirname, '../app/views'); line 3: app.set('view engine', 'handlebars'); server.js文件需要config文件夹中的express.js文件,就是这样。 如果我把“views”文件夹放在根目录(第二行除外),一切正常,但是,如果我使用第2行和图片中显示的文件夹结构,我总是得到一个错误ENOENT:“没有这样的文件或目录..“ 尝试通知“views”文件夹的正确path时,尝试在第2行上使用什么格式并不重要,错误消息始终表示无法find文件,显示的URL总是忽略“app”文件夹(它显示我尝试的每个path,但它使应用程序部分消失)。 不pipe我做什么,但节点似乎只是忽略该应用程序文件夹..就好像我无法访问它。 Ex: 1) path.join(__dirname, "../app/views"); > ENOENT "C:\root\views\layouts\main.handlebars". 2) path.join(__dirname, "../xapp/views"); > Failed lookup view "C:\root\xapp\views" Note how the "app" portion of the first option disapears from the url !! 我假设这是一个“path”问题,我不明白是怎么回事。 有人可以帮我解决吗? 如果有人知道我在哪里可以读到关于这个“path事件”背后的逻辑,我会很感激。 例如:当我只使用“__dirname”在第2行,我得到的错误消息是节点“无法查看视图”文件名“在视图目录:”path_string /configuration“…这是我很难解释(我是个新手),但是我认为你们比我更有经验,可以理解我在说什么。 […]

正则expression式等价

我正在试图写一个正则expression式来达到与grep -w相同的结果。 我现在提出的是: var regex = /([^\w]|^)word_to_search([^\w]|$)/; 它似乎正常工作。 有没有一个“更好”的解决scheme,你知道的?

Node.js上的RegExp会导致不确定的模式

我有这个正则expression式: /\|====(.*)====>((.*|\n|\r)*?)<====\1====\|/g 它匹配的模式如 |==== Données ====> byteCode = { id : [], tag : [], ast : [] }; <==== Données ====| $ 1表示第一个捕获组,例如“Données”。 在Firefox中,预期的行为是正确的,但是在node.js中是一个笑话! 如果你用'exec'调用这个正则expression式,程序进入不确定的模式,而不是gc错误,没有超时,没有任何…但程序永远不会结束…为什么? 如果您希望重现这一点,只需在任何terminal中通过此脚本: const regexp = /\|====(.\*)====>((.\*|\n|\r)*?)<====\1====\|/g; const text = String.raw ` |==== Données ====> byteCode = { id : [], tag : [], ast : [] }; <==== Données ====| […]

向Express模型添加一个方法

假设我有一个Express模型: var SchemaDescription = {}; var Model = = new mongoose.Schema(SchemaDescription); Express允许在SchemaDescription中调整数据validation。 在保存它完美的作品,但在更新,由于mongoose性质,它不被称为,并没有干净的方式来称呼它。 我试过Model.pre('update', …); 但没有find在写入数据库之前访问/更正模型数据的方法:因为复杂的validation逻辑,例如在检查之前重新格式化一些数据。 一个合乎逻辑的解决scheme是将validation代码保存/更新控制器的处理程序,但会导致代码的重复。 为了保存MVC模式,至于更新,我想把一个公共方法,模式,或架构,获取input数据和validation它们。 我的尝试看起来像: Model.prototype.validate = function(input, isUpdate) {…}; 要么 SchemaDescription.validate = function(…) {…}; 以不同的组合。 响应总是看起来像"Cannot set property 'validate' of undefined" 有没有一种方法可以将一个自定义的公共函数成员放到Express模型/模式中,以便在控制器中调用? 可以使用什么方法validation保存和更新的数据,而不会出现代码重复,或者将validation逻辑放在控制器上?

奇怪的cors与套接字问题

我正在使用btford.socket-io,并尝试与节点交谈。 它工作正常,但不是我从localhost:5000更改为example.org如下所示: .factory('socket',function(socketFactory){ //working var myIoSocket = io.connect('http://localhost:5000'); //not working var myIoSocket = io.connect('http://example.org:5000'); mySocket = socketFactory({ ioSocket: myIoSocket }); return mySocket; }) 我在我的控制台中得到了这个错误 XMLHttpRequest cannot load http://example.com:5000/socket.io/?EIO=3&transport=polling&t=LIGH5VO. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://localhost:8100' is therefore not allowed access. The credentials mode of […]

Nodejs会话pipe理与java服务器会话pipe理相比较

考虑一个类似tomcat的Java web应用程序,它处理sessions 。 sessions存储在内存中(并且可以在服务器重启时serialized到硬盘)。 对于不能自行处理会话的nodejs应用程序,可以使用https://github.com/expressjs/session托pipe的一些名为expressjs/session库来开发会话。 在查看expressjs/session文档时,您会看到以下警告: 警告:默认的服务器端会话存储器MemoryStore故意不是为生产环境而devise的。 它会在大多数情况下泄漏内存,不会通过单个进程扩展,而是用于debugging和开发。 对我来说,将会话存储在内存中是目前在java web应用程序中所做的,没有任何问题。 现在我的问题是: 在会话中存储会话是一个不好的做法?! 如果在服务器重新启动期间失去会话并且性能不是我所关心的(因为我的应用程序规模),将会话存储在内存中仍然是nodejs不好的做法? (请参阅会话存储的用途是什么? )

在Nodejs中使用正则expression式停止stream

我正在尝试从另一个问题的正则expression式:正则expression式只接受字母数字,除了在中间的一个连字符 我有这个代码作为我的用户名validation的一部分: … var re = /^(?:[a-z0-9]{6,20}|(?=.{10,21}$)[a-z0-9]+-[a-z0-9]+)$/i; var found = username.match(re).length; … 但是如果用户名无效,stream程停止在这里,并且不会继续过去。 我需要能够问: if(username fails regex) { send error back to client }

client-sessions nodejs / Express – 错误:无法设置未定义的属性“mydata”

我试图在nodejs / Express中使用客户端会话中间件,并且出现以下错误: Cannot set property 'mydata' of undefined. 我也看了这个post,但是找不到更多的线索,为什么我可能会得到这个错误。 节点-JS-客户端会话而不是创造-REQ会话 var bodyParser = require('body-parser'); const express = require('express'); const app = express(); const clientSessions = require("client-sessions"); var urlencodedParser = bodyParser.urlencoded({ extended: false }); var router = express.Router(); app.use(clientSessions({ cookieName: 'mydata', // cookie name dictates the key name added to the request object secret: 'longsecretkeyorwhatever', […]

快递会保持多久?

我有一个基于节点的项目如下: "express": "~4.13.1", "express-sequelize-session": "^0.4.0", "express-session": "^1.12.1" 由于我对db行数量有严格的限制,可能主要关心的是:会话存储在db中的时间有多长,有没有办法修改这些限制?

即使JSON数据在MongoDB上持久化,nodeJS方法也会报错

我是nodeJS和mongoDB的新手。 使用nodeJS作为中间件创build应用程序,使用mongoDB作为数据库,使用UI中的angularJS。 在nodeJS中有控制器和模型到业务逻辑以及保存数据。 目前,即使在对象插入数据库(从模型)后,控制器也会遇到错误。 控制器代码如下: router.post("/add", function(req,res){ var student = req.body; Students.add(student, function(err) { if (err) { throw err; } var respOut = JSON.stringify({id:student.id}); console.log("respOut"); res.send(respOut); }); }); 型号代码: exports.add = function(student, cb) { var collection = db.get().collection('students'); collection.insert(student, function(err) { if (err) { throw err; } console.log("Record added"); }); } 在UI端使用下面的angularJS代码将数据提交给nodeJS控制器: mainApp.controller("addStudentController", function($scope,$http) { […]