Articles of 表示

出口承诺链的快速路线方法的最佳途径?

我有一个正在被重构使用ES6承诺避免callback地狱的API路线。 在成功转换为承诺链后,我想将我的.then()函数导出到单独的文件以保持清晰和清晰。 路线文件: 函数文件: 这工作正常。 然而,我想要做的是将在类的constructor()函数中声明的函数移动到独立的方法,它可以引用由构造函数实例化的值。 这样一切都更好。 但是,当我这样做时,我遇到了范围问题 – this是没有定义,等等。这样做的正确方法是什么? ES6适合在这里使用,还是应该使用其他的结构? 原始代码: 路线… .post((req, res) => { let SubmitRouteFunctions = require('./functions/submitFunctions.js'); let fn = new SubmitRouteFunctions(req, res); // ******************************************* // ***** THIS IS WHERE THE MAGIC HAPPENS ***** // ******************************************* Promise.all([fn.redundancyCheck, fn.getLocationInfo]) .then(fn.resetRedundantID) .then(fn.constructSurveyResult) .then(fn.storeResultInDB) .then(fn.redirectToUniqueURL) .catch((err) => { console.log(err); res.send("ERROR SUBMITTING YOUR RESULT: ", […]

Sequelize包含返回数据

我使用Sequelize express与Node.js作为后端。 我有很多关系模型事件和模型买家 模型事件: module.exports = function (sequelize, DataTypes) { var Event = sequelize.define("Event", { //…}, { tableName: 'event', timestamps: false, freezeTableName: true, classMethods: { associate: function (models) { Event.hasMany(models.Meetings, {foreignKey: 'event_id'}); Event.belongsToMany(models.Buyer, { through: 'BuyerPresent'}); Event.belongsToMany(models.Seller, { through: 'SellerPresent'}); } } }); return Event; }; 模型卖方: module.exports = function (sequelize, DataTypes) { var Seller […]

在request.pipe之前防止快速的body-parser移除主体

我正在尝试创build一个简单的快递中间件filter,它应该查看POST正文并确定是否应该将其传送到正确的服务器,或者是否被阻止。 如果我使用body-parser ,看起来我确实可以获得req.body ,但是当我将请求传递给另一个外部服务器时,它从请求中消失。 我试图解决这个问题的方法如下: //Router router.route('') .post(authController.isAuthenticated, urlHelper.bodyParser, //Without these two, everything pipes correctly urlHelper.filterBasedOnSomething, //Without these two, everything pipes correctly urlHelper.pipeToTrustedZone); 在urlHelper中: const filterBasedOnSomething = function (req, res, next) { if (req.body && req.body.something === 'some string' && req.body.somethingElse === 'some other value') { return res.status(403).send("You shall not pass"); } else { next(); […]

OAuth中的CORS:对预检请求的响应不会通过访问控制检查

所以我试图实现OAuth 2stream,而我的web应用程序是放弃授权代码/访问令牌的服务器。 将代码发送回第三方网站(在这种情况下为zapier)时发生Cors错误: XMLHttpRequest无法加载https://zapier.com/dashboard/auth/oauth/return/App505CLIAPI/?code=somecode&state=somestate 。 对预检请求的响应不会通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 原因' https:// myurl '因此不被允许访问。 如果我手动打开一个新标签,粘贴该zapier uri,一切正常完美。 看起来像一个典型的CORS问题,但没有stream行的解决scheme为我工作: 添加Access-Control-Allow-Origin :我正在使用这个oauth2orize库,并且发送reponse来进行预检似乎也是库的一部分。 所以我不能添加标题。 使用cors :已经尝试app.use(cors())和app.options('*', cors())应该适用于所有路线,但根本不工作。 我的web应用程序坐在一个节点快递服务器上,前面有一个nginx代理服务器。 任何想法的问题可能会被赞赏。

MEAN堆栈中的validation…?

我正在开发一个MEAN堆栈应用程序,但我坚持validation(用户input)。 我知道客户端validation在Angular-JS中完成,但我很困惑在服务器端validation的地方。 要么使用mongooose进行validation,要么不对mongooose进行任何validation(只是存储)仅在服务器(Node / Express使用某些模块)中进行validation, 或者在服务器级别和数据库级别进行validation。 ? 我应该做什么请帮助我select哪种做法是最好的….. ???? 谢谢。

使用NodeJS收集所有redirect的URL的URL

我想检索从源URL Xredirect的URL列表,它可能有许多redirect的URL,但我想要它的所有列表。 例如: http://www.example.com/origin-url 它将redirect到 http://www.example.com/first-redirect 再次将redirect到 http://www.example.com/second-redicect 最后是这个 http://www.example.com/final-url 所以我想要的是使用NodeJs或Express的所有这些URL的列表 http://www.example.com/origin-url –>> http://www.example.com/first-redirect –>> http://www.example.com/second-redicect –>> http://www.example.com/final-url 给我这个build议,我应该使用哪个节点模块来实现这一点。 提前致谢。

Express路由 – 基于区域设置的redirect

我正在尝试为我的多语言网站设置路由。 我的目标是根据他的语言(已经被检测到)来redirect用户。 这是我目前未完成的代码: app.get('/(:lang)?', (req, res, next) => { const urlLang = req.params.lang || 'en'; // English is default const userLang = 'nl'; // Will be detected if (urlLang !== userLang) { // Wrong URL res.redirect(userLang + req.url); } else next(); }); 在这个例子中,我尝试从url( urlLang )中减去请求的语言。 如果该语言与用户语言不匹配,则应redirect到正确的URL。 我试图达到的几个例子: 用户使用语言en请求/ :不redirect 用户使用语言nl请求/ :redirect到/nl 具有语言en请求/foo/bar :无redirect 用户使用语言nl requests […]

当pipe道/stream传输到浏览器时,HTML文件显示为明文

我有这个快速处理程序 router.get('/', ac.allow('Admin'), function (req, res, next) { let html = path.resolve(__dirname + '/../coverage/lcov-report/index.html'); fs.createReadStream(html).pipe(res); }); 问题是文件被发送到浏览器, 但它只是显示为纯文本,并没有得到渲染 …有趣的,但有道理。 有谁知道这是为什么?

在快速应用中未捕获的SyntaxError

我试图用Websockets实时数据streamChartjs但是我不断收到以下错误。 main.js:1未捕获的SyntaxError:意外的标记< 我究竟做错了什么? 我的服务器代码/ HTML看起来像这样: server.js const config = require('./config.json'); const express = require('express'); const SocketServer = require('ws').Server; const path = require('path'); const PORT = config.PORT|| process.env.PORT ; const INDEX = path.join(__dirname, config.INDEX); const server = express() .use((req, res) => res.sendFile(INDEX)) .listen(PORT, () => console.log(`Listening on ${ PORT }`)); const wss = new SocketServer({ server […]

使用Express创build反应应用程序

我需要查询一个数据库,我正在使用create-react-app 。 连接到数据库( pg-promise )的库不能与Webpack一起使用,需要在节点服务器上运行。 所以我安装了Express并且有这个: app.get('*', (req, res) => { res.sendFile(path.resolve(__dirname, '..', 'build', 'index.html')); }) 如何从React页面加载数据库中的数据? 我虽然使用request但我怎样才能请求我自己的服务器? 我应该添加到上面的代码行? 我认为它会是这样的: app.get('/query/:querybody', (req, res) => { // process and return query }) 这是正确的吗? 我怎样才能使它与SPA一起工作?