Articles of 表示

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一起工作?

POST请求types错误 – 无法读取未定义的属性

我正在向我的mongo服务器发送一个curl请求,并且请求总是说“不能读取属性”的用户名'undefined“。 我最好的猜测是我的curl请求格式不正确,这将解释未定义的请求,但它看起来很好。 任何人都可以看到这里的问题是什么? curl请求: curl "http://localhost:3000/api/users" \ –include \ –request POST \ –data '{ "user": { "username": "testuser", "email": "test@email.com", "pwd": "pass" } }' 用户路由: const router = require('express').Router() const bcrypt = require('bcryptjs') const User = require('../models/user') router.post('/', (req, res) => { const user = new User({ username: req.body.user.username, email: req.body.user.email, passhash: bcrypt.hashSync(req.body.user.pwd, 10) }) […]

无法使用节点快递发布到服务器

我试图从postman发布数据到我的节点服务器,我一直得到404。 我的代码是否正确设置为接收发送到http://localhost:8080/back-end/test ,如果不是,我该如何解决? var express = require('express'); var request = require('request'); var nodePardot = require('node-pardot'); var bodyParser = require('body-parser'); var rp = require('request-promise'); var app = express(); var port = process.env.PORT || 8080; // Start the server app.listen(port); app.use(bodyParser.json()); // support json encoded bodies app.use(bodyParser.urlencoded({extended: true})); // support encoded bodies console.log('Test server started! At http://localhost:' […]

Mongoose更新文档或插入新文档如果没有findID(Express REST API)

我已经build立了一个Express REST Api,并且想实现一个检查某个对象ID是否存在的任务。 如果该ID存在于Mongo数据库中,我想使用Put请求来更新这个文档。 这部分已经在我的代码中工作。 如果ID尚不存在于数据库中,我想创build一个新的文档。 要做到这一点,我试图将“upsert”选项设置为true,但是,如果我现在做一个ID的放入请求,这是不是在我的数据库,但它回来的错误: throw er; // Unhandled 'error' event ^ CastError: Cast to ObjectId failed for value "34455ab67" at path "_id" for model "event" 这里是我的事件模型代码: var mongoose = require('mongoose'); var eventSchema = mongoose.Schema({ name: { type: String, required: true } }); var Events = module.exports = mongoose.model('event', eventSchema, 'event'); module.exports.updateEvent = […]

你应该发送DB错误给用户吗?

在我写的NodeJS / MongoDB服务器中,我有很多的API调用来存储用户和数据库中的内容。 Mongoose已经调用了MongoDB,在查询之后,它将返回一个带有错误(如果有的话)和一个文档(如果有一个返回的)的callback函数。 我想知道如果我应该把错误发送给用户,扔它(停止整个服务器),或只发送500错误。 例: accountDocument.save(function (err, account) { if (err){ res.status(500).json(err); // Option 1 – sends DB error to user res.status(500).end(); // Option 2 – just notifies there was a problem throw err; // Option 3 – stops the server completely } else res.status(200).json(account); }); 我应该select哪一个?

在express.js中传播运算符表单提交

可以传播运营商解决以下问题? 想象一下,我有更多的领域,那么我必须为每个领域声明req.body.something,这是非常乏味的。 app.use((res,req,next) => { const obj = { name: req.body.name, age: req.body.age, gender: req.body.gender } // User.saveUser(resp => res.json(resp)) //User model })

更改嵌套callback函数中的variables

基本上我试图完成的是从handleMusicAPICalls函数获取结果,并将其推送到结果数组中,该结果数组在get路由的callback函数中声明。 目前当我运行这个时,第一个输出是“[]”(从第二个console.log),然后在它下面是我想看到的实际数据(第一个console.log)。 有什么build议? router.get("/activities", middleware.isLoggedIn, function(req, res) { var destination = req.query.destination; var startDate = req.query.daterange.replace(/\s+/g, '').split("to")[0]; var endDate = req.query.daterange.replace(/\s+/g, '').split("to")[1]; var activities = req.query.activities; var results = []; helper.handleMusicAPICalls(destination, startDate, endDate, activities, function(res) { console.log(res); results.concat(res); }); console.log(results); });