Tag: expression

Node Express – pathpath冒号参数例外

目前我有两个路线在我的应用程序: /invoice/:invoice返回来自Mongoose的Invoice文档的JSON数据 /invoice/preview在HTML模板中返回/invoice/preview的预览(注意,这并不总是预览现有的发票,也可能是不存在的,其数据是通过url参数提供的,这就是为什么路线不能/invoice/:invoice/preview ) 题 应该有一个更好的方法来声明这两个特定的路由,因为/invoice/preview路由现在调用这两个处理程序,因为它匹配两个正则expression式。 如果我们在CSSselect器/invoice/:invoice:not(preview)将是我想要的行为。 不幸的是我没有find任何文件。 有什么方法可以实现这个或任何方式来改善这个端点结构?

Sinon间谍不在快速中间件内部调用

我目前正在学习testing一个jwtauthenticationexpress中间件。 我的下一个callback被称为,因为我把一个console.log在那里,但我的sinon间谍断言失败。 有人可以看看这个案子吗? 这是我的testing案例 it("should call next when the token provided is valid", () => { let token = jwt.sign({}, process.env.JWT); let request = httpMocks.createRequest({ headers: { Authorization: `Bearer ${token}` } }); const next = sinon.spy(); authenticateJwt(request, response, next); expect(next.calledOnce).to.be.true; }); 这是我的中间件 import jwt from "jsonwebtoken"; export default function(req, res, next){ const authorizationHeaders = req.headers["authorization"]; […]

Node Express Mongoose:编写API以通过多个可选参数search数据

我有一个searchinput框,用户应该可以通过员工ID或名字或姓氏进行search。 员工ID也是一个string。 我有称为configuration文件,具有员工信息的mongo模型。 我正在使用节点Express和mongoose。 我想有一个路由器接收id或名字或姓氏作为请求参数如下。 this.router.get('/name/:name', this.getMidSearchResults); private getMidSearchResults(req: Request, res: Response, next: NextFunction) { var nameRegex = {"$regex": new RegExp('^' + req.params.name.toLowerCase(), 'i')}; Profile.find({ mid: nameRegex } || {firstName: nameRegex} || {lastName: nameRegex}, function(err, data) { if (err) throw err; res.send(data); }); }

Graphql的date字段types必须是输出types,但得到:未定义

我有一个与node / expres和ES6运行的graphql服务器,我想迁移到打字稿,当我想要做graphql架构我遇到一些datetypes的问题。 我知道graphql不包含本地datetypes,但是在我的ES6实现中,我使用graphql-date来支持这个限制。 import { GraphQLObjectType, GraphQLSchema, GraphQLID, } from 'graphql'; import GraphQLDate from 'graphql-date'; const events = new GraphQLObjectType({ name: 'events', description: 'This represent an Event', fields: () => { return { id: { type: GraphQLID, resolve(event) { return event.id; } }, start: { type: GraphQLDate, resolve(event) { return event.start; } } }; […]

Node.js – 从函数返回数组

我有一个函数返回一个使用方法myArray.push({“key”:value})创build的数组 在路由器文件中,我做了这个,但它没有工作: router.get('/:ID', function(req, res, next) { var myRenderArray = []; myRenderArray = auxFunctions.myArrayFunc(req.params.ID); res.render('myView', {title: 'title', myRenderArray}); }); 如果我把整个函数放在路由器文件中,并改变res.render('myView', {title: 'title', myRenderArray});的return语句, 有用! 恢复function代码: module.exports.myArrayFunc = function myArrayFunc(ID){ var myArray = []; var id = req.params.ID; var req1 = new dbConfig1.Request(); var req2 = new dbConfig2.Request(); req1.query(query1('foo', ID)) .then(function (array1) { req2.query(query2('foo', id, array1[0].fooId)) […]

如何打印包含特定string的行?

我想在string中打印包含date的行,我正在使用拆分模块来实现该任务。 下面的代码总是打印else语句。 ctrl.js fs.readFile(dir + '/' + logFile, 'utf8', function(err, data) { var lines = data.split('\n'); var linesWithDate = lines.split('|')[0].replace(/[\[\]']+/g,''); lines.forEach(function(line) { if (linesWithDate) { console.log('print lines with date',line); } else { console.log('print lines without date',line); } } }); 文件数据 [2017-03-23T18:13:16Z]|zlpv7490|verbose|bmid: n/a|infra.topicWorkers|topology changed, emitting topology event lorem ipsum Lorem Ipsum is simply dummy text of […]

从angular2服务发送正文中的值

我有一个Angular2服务 logIn (username, password): Observable<User[]> { return this.http.get(this.getUserUrl + username + '/' + password) .map(this.extractData) .catch(this.handleError); } 它发送一个请求 router.get('/authenticate/:username/:password', function(req, res, next) { schema.User.find({ username: req.param("username"), password: req.param("password")}).exec(function (err, users) { if (err) return console.error(err); console.log("Load success: ", users); res.send(users); }); }); 但我需要一种方式来发送username ,尤其是password的方式,而不是暴露给请求本身

如何validationExpress Nodejsstring中的body参数是否可以使用express-validation和joi转换为JSON

我正在创build一个接受post请求的函数。 发布请求还包含一个转换为string的JSON对象。 在后端,我需要validation这个string是否确实可以parsing成JSON,然后才能继续。 有路由function: var express = require('express'); var validate = require('express-validator'); var hotelController = require('../controllers/hotel-controller'); var hotelValidation = require('../validations/hotel-validation'); var router = express.Router(); router.route('/create') .post(validate(hotelValidation.createHotel), hotelController.create); 这是validation对象: var Joi = require('joi'); module.exports = { createHotel: { body: { //NEED TO CHECK IF THE BELOW FIELD //CAN BE CONVERTED TO JSON FROM STRING data: Joi.string().required() […]

表示多个静态路由正则expression式parsing

我试图用express来从两个目录提供静态文件。 我从两个目录提供服务的原因是由于在目录#2中具有匹配的目录名称的目录#1中服务的文件之间的冲突 在目录#1中,它将只包含文件: /path/to/dir1/foo (where 'foo' is a file) 在目录#2中,它将包含包含文件的子目录: /path/to/dir2/foo/bar (where 'foo' is a dir && 'bar' is a file) 我的目标是能够执行以下命令: wget "http://myserver:9006/foo" wget "http://myserver:9006/foo/bar" 下面的代码将完成所有的事情,直到我目录#2: "use strict"; const express = require('express'); const app = express(); app.use('/', express.static('/path/to/dir1/')) const server = app.listen(9006, () => { let host = server.address().address; let port = server.address().port; console.log(`Example […]

打开一个JavaScript正则expression式的Sed函数

我在bash有这个文本规范化函数 normalize_text() { tr '[:upper:]' '[:lower:]' | sed -e 's/^/__label__/g' | \ sed -e "s/'/ ' /g" -e 's/"//g' -e 's/\./ \. /g' -e 's/<br \/>/ /g' \ -e 's/,/ , /g' -e 's/(/ ( /g' -e 's/)/ ) /g' -e 's/\!/ \! /g' \ -e 's/\?/ \? /g' -e 's/\;/ /g' -e 's/\:/ /g' […]