Articles of 表示

如何在控制器文件中使用socket.io

我正在使用Node.JS Express和socket.io。 所以我的想法是直接从我的控制器的插入方法发出消息。 在我的server.js文件中,iam创buildsocket.io对象,并尝试使其可用于其他模块: 我的server.js是这样的 require('rootpath')(); var express = require('express'); var app = express(); var cors = require('cors'); var bodyParser = require('body-parser'); var expressJwt = require('express-jwt'); var config = require('config.json'); var mongoose = require('mongoose'); mongoose.connect(config.connectionString); var db = mongoose.connection; db.on('error',console.error.bind(console,'Connection error')); db.on('open',function(){ console.log('connected'); }); app.use(cors()); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // use JWT auth to […]

如何让我的deserializeUserfunction在护照login后不断运行?

我用我的用户身份validation有一些麻烦。 我可以login,注册和注销,您可以从客户端认为一切都很好。 但是,我的反序列化用户函数被重复调用。 每秒几十次。 我最初并没有注意到,但是如果你login了足够长的时间,应用程序真的变慢了。 我似乎无法弄清楚。 任何帮助将不胜感激。 另外,我试过在user.js文件的末尾运行client.end(),但是这并没有解决问题。 我想知道这是不是一个交叉来源的问题。 -UPDATE – 我不怀疑这是一个CORS问题,因为我刚刚尝试从服务器端口上的静态HTML文件login,问题依然存在。 *在与服务器不同的端口上运行的前端进行响应。 Node,Express和Postgres在服务器端。 app.js const express = require('express'), app = express(), bodyParser = require('body-parser'), cookieParser = require('cookie-parser'), expressValidator = require('express-validator'), passport = require('passport'), session = require('express-session'); require('dotenv').config(); let port = process.env.PORT || 5000; app.use((req, res, next) => { res.header('Access-Control-Allow-Credentials', true); res.header('Access-Control-Allow-Origin', 'http://localhost:3000'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); […]

301用快递redirect

我有一个node.js网站,将取代现有的网站。 新网站中的一些url与旧url中的url不同,因此我需要为这些url设置301redirect。 目前我正在使用以下重新路由特定页面: app.get('contact-us', (req, res, next) => { res.redirect(301, 'http://www.example.com/contact'); }); 但是有没有一种方法可以根据模式重新路由? 例如在旧网站上我/产品/ ID /产品名称,我需要重新路由到/目录/ ID /产品名称

Node.exe陷于100%的CPU

我有一个ExpressJS node.js应用程序运行在Windows Server 2016 VM上的IISNode与4核心和32GB的内存。 我可以为每个内核设置一个进程,所以我有4个node.exe正在为我的应用程序运行。 节点版本是v6.10.3。 这是资源通常的样子: 我可以看到节点垃圾收集似乎正在发生,因为内存波动。 如截图中所示,它将正常hover在峰值工作的下方。 不过,我正试图find其中一个进程的原因,以达到100%的CPU利用率。 每当发生这种情况,我被迫杀死node.exe,因为我的整个应用程序停滞。 它将停留在高峰CPU,所有进一步的要求,然后旋转。 什么会导致node.exe中的CPU利用率高,以及如何locking在100%? 这是由于垃圾收集拖延? 什么工具可以用来找出什么node.exe停滞,以更好地debugging我的应用程序? IISNode应该作为一个负载平衡器,并将所有请求委托给另一个核心? 现在,我被迫在一个定时器上回收我的应用程序池,以完全终止所有工作节点进程并重新启动它们。 这限制了应用程序长时间的运行。 我感谢任何见解!

React / Webpack / Express渲染服务器端的问题

我试图将服务器端渲染到我现有的React / Redux应用程序中。 几次失败的尝试后,我想我几乎在那里,但我遇到了几个问题。 我对React / Redux / Express / Webpack相当陌生,所以如果我犯了一些愚蠢的错误,我很抱歉! 问题1 – 窗口未定义 当我使用Redux时,我需要跟踪初始状态并将其加载到我的应用程序中。 内部server/index.js我从商店获取初始状态,并使用window.__initialData__ = ${serialize(initialData)}存储在window.__initialData__ = ${serialize(initialData)} 。 服务器代码如下: import express from 'express'; import React from 'react'; import { renderToString } from 'react-dom/server'; import { Provider } from 'react-redux'; import { StaticRouter, matchPath } from 'react-router-dom'; import serialize from 'serialize-javascript'; import routes […]

在Mongoose(MongoDB,Node.JS,express)中的对象中创build对象后复制对象

我创build了一个循环来向不同地区添加产品(包含数据)。 首先,我想将所有产品添加到所有地区。 然后,我将(在不同的操作)从这些地区删除产品。 该网站的前提是,对象将能够被一个地区的用户保留,这将使该对象在该地区不可用,但在其他地区仍然可用。 我在注册时保存用户区域,只允许他们查看其区域中可用的对象。 我创build了名为Regions的对象,并将每个产品添加到区域内的数组。 我将它们存储在区域内的原因是未来我期待数以百计的不同产品,并且相信只要返回区域数组中的所有项目在服务器上比在每个产品中单独检查一个数值容易得多。 我的问题是 当运行我的代码,我得到我的网页内的每个对象的重复。 我使用的代码是: dummyregions.forEach(function(seed){ Region.create(seed, function(err, region){ if(err){ console.log(err); } else { dummyproducts.forEach(function(seedprod){ Product.create(seedprod, function(err, product){ if(err){ console.log(err); } else { region.products.push(product); region.save(); } }); }); } }) }); dummyRegions是一个对象,包含名称“string”和数组= [] dummyproducts包含名称“string”,类别“string”和缩略图图片url“string” 我只有4个虚拟产品和3个地区的testing项目,但这是我得到的结果: 每个地区的重复项目 任何帮助将非常感激!

在mongodb中显示字段值部分匹配的文档

以下是我的电影架构: "_id" : ObjectId("59b9501600fcb397d6acd5bb"), "theatreid" : 2, "name" : "carnival cinemas", "location" : "kanjulmarg", "address" : "sec 2,kanjul, Mumbai, Maharashtra 400703", "shows" : [ { "mname" : "bareily ki barfi", "timings" : [ 10, 13, 14, 16, 22 ] }, { "mname" : "Toilet:ek prem katha", "timings" : [ 8, 9, 14, 16, 20, 23 […]

获取Sequelize Promise的内容而不执行它

我知道这可能是一个奇怪的问题,从现在开始我很抱歉。 让我们来像我这样一个容易的东西。 let query = User.findAll({where: {name: 'something'}}) 有没有一种方法可以让我访问query的内容。 而内容的意思是使用User.findAll生成的事实,我不关心User.findAll .then()的结果。

为mongoosevalidation设置错误代码

我正在使用mongoosevalidation来validation我的模型。 例如: var some_schema = new Schema({ title: { type : [String, 'title must be string'], required: [true, 'title is required'] } }) 此架构具有自定义错误消息,我也想设置自定义错误代码

如何访问server.js文件之外的应用程序?

我有两个文件: server.js const app = express(); require('./server/config/crawlerBasedModels.config').basedModels() .then((models) => { app.locals.basedModels = models; console.log(app.locals.basedModels); }) .catch(err => console.log(err)); crawlerBasedModels.config: const fs = require('fs'); const Promise = require('bluebird'); module.exports = { basedModels: () => { return new Promise((res, rej) => { let basedModelsPath = require('../config/exportFolderPath'); const basedModels = JSON.parse(fs.readFileSync(basedModelsPath + '/basedModels.json')); if(basedModels) {console.log(basedModels); return res(basedModels);} return […]