Articles of 表示

发送邮件后,Nodemailer速度很慢

在用户提交联系表单之后,我使用nodemailer发送邮件,然后用户将被定向到一个感谢页面。 我现在在cloud9上开发了这个项目。 这是我的代码: var express = require("express"), bodyParse = require("body-parser"), multer = require("multer"), nodemailer = require("nodemailer"); var app = express(); app.use(bodyParse.urlencoded({extended: true})); var smtpTransport = nodemailer.createTransport({ service: "Gmail", auth: { type: "OAuth2", user: "xxxxx@gmail.com", clientId: "xxxxxx", clientSecret: "xxxxx", refreshToken: "xxxxx", accessToken: "xxxxx" } }); app.post("/upload", function(req, res){ var mailOptions = { from: "xxxx <xxxx@gmail.com", // […]

mongoose关注/追随者

我正在尝试为nodejs / mongoose驱动的网站添加以下/ followersfunction。 我正在使用下面的方法正确存储ID的问题。 不太清楚发生了什么问题,但似乎只是将ID保存到下面的部分,而不是更新第一部分的追随者。 我知道,如果用户ID只是传递到发布请求会很容易,但我认为将用户ID存储在前端是一种安全问题,所以只是使用用户名来获得ID会更好。 // Handles the post request for following a user router.post('/follow-user', function(req, res, next) { // First, find the user from the user page being viewed User.findOne({ username: req.body.username }, function(err, user) { // Add to users followers with ID of the logged in user user.followers = req.user._id; // […]

我的命令在节点js中的每个刷新页面重复

我在我的项目中使用节点js与expression框架和socket.io。 当我在浏览器(这个地址: http:// localhost:3001 /testing )加载testing页时,每一件事情都很好,并在服务器日志中打印“ 用户连接 ”,但当我再次刷新页面打印该消息两次和另一个刷新打印该消息三次,每刷新一次重复该消息。 我的代码有什么问题? 谢谢。 test.js var express = require('express'); var router = express.Router(); var io = require('../app'); router.get('/', function(req, res, next) { io.on('connection', function(socket){ console.log('a user connected'); }); res.render('test', { title: 'test' }); }); module.exports = router; app.js var express = require('express'); var path = require('path'); var favicon = […]

如何限制API只能在浏览器中运行?

我正在使用节点js,我把政策限制在api的浏览器的保证。为此,我把以下条件 app.route('/students').all(policy.checkHeader).get(courses.list) exports.checkHeader = function(req, res, next) { var headers = req.headers; if ( headers['upgrade-insecure-requests'] || headers['postman-token']) { res.status(401).json('Page not found'); } else { return next(); } } 我不知道我的过程是否正确。我正在寻找只存在于浏览器中的公共参数(header-parameter)。是否有人可以帮助我。谢谢。

节点,expression,在URL中处理“..”符号

我正在寻找获得节点(使用快递路由)来解决在url上执行任何路由之前,所有出现的../符号的url。 例如,如果在/a/b/../c/d/e/../../f处查询apache,它将首先parsing所有的../符号,并最终提供位于/a/c/f 。 然而,使用node + express, /a/c/f /a/b/../c/d/e/../../f /a/c/f /a/b/../c/d/e/../../f是从字面上得到的,并且不会匹配/a/c/f路由。 我的问题是,下面的代码不会响应像/a/b/../c/d/e/../../f这样的请求: app.get('/a/c/f', function(req, res) { return res.status(200).json({ msg: 'it worked!' }); }); 我怎样才能得到节点+快递解决../符号在url中?

对于Node.js应用程序,使用带有Express-Handlebars的Angular

我有一个运行Express的node.js应用程序,并将模板框架用作句柄。 我最近开始学习Angular并将其集成到我的node.js应用程序中。 唯一的问题是,明确的句柄和angular度的标记是相同的。 这两个框架都使用{{}}。 我做了一些研究,发现这个Stackoverflow的问题: 使用Express Handlebars和Angular JS 接受的答案build议使用interpolateProvider更改标记符号。 我实现了这一点,它不适合我(我已经在这个答案下评论)。 我的代码如下所示: main.handlebars <!DOCTYPE html> <html ng-app="myapp"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>GETTING STARTED WITH Angular</title> <meta name="description" content="An interactive getting started guide for Brackets."> <link rel="stylesheet" href="/css/style.css"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script> <script> var app = angular.module("myApp", []); app.config(function($interpolateProvider) { $interpolateProvider.startSymbol('//'); $interpolateProvider.endSymbol('//'); }); app.controller('DemoController', function() […]

快速validation与mongoose

我正在开发我自己的网站使用(angularjs,bootstrap)前端(节点,快递)为后端(MongoDB,mongoose层)的数据库。 我有一个registry格,在这个表格中,我想检查一下,当有人尝试创build新的帐户时,电子邮件还没有被采取,所以我希望我的注册API检查提交的电子邮件是否已经被采取过。 我现在使用这个validation器https://github.com/ctavan/express-validator#validation-by-schema ,这是我的代码: var vadlidateRegUser= function (req,res,next) { req.checkQuery('UserName','Username must contain letters and numbers only').isAlphanumeric().notEmpty(); req.checkQuery('Email','Email should have a valid syntax eg: example@example.com') .isEmail().notEmpty(); var error = req.validationErrors(); if(!error){ next(); }else { res.json({success:false, message:error}); } } 现在我想检查一下validation器,如果电子邮件是唯一的,就像这样: req.checkQuery('Email','Email should have a valid syntax eg: example@example.com') .isEmail().isUnique(Model Name); 有什么build议么 ?

Node.js集群错误

您好,我是非常新的node.js和JavaScript,我想创build一个culter.js与nodejs集群模块,在我的if语句结束时,我打电话server.js启动应用程序。 cluster.js const cluster = require('cluster'); const cpuCount = require('os').cpus().length; const startServer = require('./server'); if (cluster.isMaster) { for (let i = 0; i < cpuCount; i += 1) { cluster.fork(); } cluster.on('exit', () => { cluster.fork(); }); } else { return startServer; } server.js const fs = require('fs'); const path = require('path'); const express = […]

为什么需要使用快递静态

对不起,愚蠢的问题,但我真的想知道为什么我们需要使用它。 我知道stactic文件是在加载时没有生成的文件,但必须在请求时发送到浏览器。 如果有人能为我解释这些问题,我将不胜感激。

Passport身份validation系统不工作

我有一个身份validation系统安装在我的快递节点应用程序,但我已经遇到了一些与我设置的护照authentication错误。 例如,注册系统工作正常,我的validation系统(基本上检查用户/通过组合对我学校的成绩簿login是否有效)也能正常工作。 但是,实际的护照login(它检查用户/传递组合是否是我的mongoose数据库中的注册用户)不能正常工作。 closuresapp.js的一部分 //passport setup app.use(passport.initialize()); app.use(passport.session()); passport.use(new LocalStrategy(function (username, password, done) { User.findOne({username: username}, function (err, user) { user.checkLogin(password, function (error, userIsValid) { if (error) { console.log('Error:'); return done(error); } if (userIsValid) { console.log('Valid:'); } }); }); })); user.js的 var mongoose = require('mongoose'); var passportLocalMongoose = require('passport-local-mongoose'); var Schema = mongoose.Schema; var bcrypt […]