Tag: 表示

expression不同的到期

我有以下代码在Express中创build会话。 app.use(session({ secret: 'randomstring', saveUninitialized: false, resave: false, cookie: { secure: true, maxAge: 60000 * 60 /* 1 hour */ } })); 我主要使用这个将会话数据存储在Passport.js中。 目前1小时后,用户会自动注销。 或者会话结束,用户注销。 有没有简单的方法在会话中存储更多的数据,并有不同的信息到期date? 所以说我想Passport.js( req.session.passport.user )会话数据有一个1小时到期。 我想要另一个数据片段(例如req.session.myDataA )的有效期为30天。 而我希望另一块数据( req.session.myDataB )没有到期并永远保持活动状态。 在Express Sessions中是否有一种简单的方法来实现这种行为?

express-validator使用ESM模块

我尝试使用–experimental-modules标志在Node.js v8.7.0中使用此语法导入ESM模块: import { check, validationResult } from 'express-validator/check'; import { matchedData, sanitize } from 'express-validator/filter'; 不过,我收到以下错误: (node:29028) ExperimentalWarning: The ESM module loader is experimental. SyntaxError: The requested module does not provide an export named 'check' at checkComplete (internal/loader/ModuleJob.js:86:27) at moduleJob.linked.then (internal/loader/ModuleJob.js:69:11) at <anonymous> 使用–experimental-modules标志打开ESM模块的正确用法是什么? 我也testing过@std/esm包。 它只适用于我转cjs: true 。

检查Node.js rest API上的资源所有权

我正在尝试使用express和mongoose来开发一个Node.js后端。 在networking上,有很多关于如何实现一个合适的authentication层的例子,但是我找不到如何正确实现授权层的例子。 在我的具体情况下,我创build了一个多用户应用程序的后端,我希望每个用户只能看到自己插入的数据。 我有三个模型: 用户 类别 文件 用户拥有一个或多个类别 , 类别包含零个或多个文档 。 CRUD操作在以下端点上执行: /user/:userid /user/:userid/category /user/:userid/category/:categoryid /user/:userid/category/:categoryid/document /user/:userid/category/:categoryid/document/:documentid 在authentication部分我设置为每个请求当前login的用户ID,所以我可以很容易地检查 jsonwebtoken.userId == req.params.userid 否则返回一个403错误。 检查类别的所有权非常容易,因为每个类别都包含对创build它们的用户的引用。 var CategorySchema = mongoose.Schema({ name: { type: String, required: true, trim: true }, user_id: { type: mongoose.Schema.Types.ObjectId, ref: 'User', index: true } }); 然而,在Document模型中,我只有一个对它所属的类别的引用,但是我没有给用户添加一个引用。 我想知道如何进行“嵌套”的关系。 我是否需要在任何深度级别添加一个user_id引用给它们全部? 有没有最佳做法? 而且,这是做我需要的正确的方法还是有任何官方/成熟的图书馆已经这样做?

我怎样才能服务的HTML,CSS和JS全部保持路由在一个module.export在不同的文件? 现在只有html服务

我是一个新手使用快递,结果是通过使这个networking应用程序我的方式笨拙。 我在一个名为route.js的module.ex里面有一个不同的path,我在app.js里面pipe理所有这些,我希望能够提供一个HTML页面并保存在模块中。 我已经使用sendFile这样做了,但它不提供CSS和JS。 我能做些什么来解决这个问题? app.js //setup var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var index = require('./routes/index'); var users = require('./routes/users'); var app = express(); var port = process.env.PORT || 3000; var mongoose = require('mongoose'); var flash = […]

下载返回的空文件

我正在构build一个node.js + express应用程序,用户将在其中input一些数据,使用pdfkit生成PDF并将文件发送给用户。 我能够成功生成文件,问题是,当我下载生成的文件,它是空的。 我甚至无法打开PDF,读者(预览,macOS本地读者)说,该文件是空的。 我使用下面的代码: var express = require('express'); var router = express.Router(); var guid = require('guid'); var PDFDocument = require('pdfkit'); var fs = require('fs'); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); router.post('/criar', function(req, res, next) { var filename = guid.raw()+'.pdf'; var doc = new […]

在路由处理中绕过authentication

我已经build立了一个注册主页和几个需要login的内部页面的应用程序。 我用Express.jsbuild立服务器和控制路由和身份validation工作正常:如果我尝试访问localhost:端口/ clientPage我得到所需的页面,如果我以前login和一个错误消息,否则。 问题是如果我尝试访问localhost:port / clientPage。 即使我没有活动的会话,我得到clientPage。 在这种情况下,我怎样才能确保前面描述的相同的行为? 我将我的GET路由的代码附加到clientPage: router.get('/clientPage', function (req, res, next) { User.findById(req.session.userId) .exec(function (error, user) { if (error) { return next(error); } else { if (user === null) { var err = new Error('Not authorized! Go back!'); err.status = 400; return next(err); } else { return res.sendFile(path.join(__dirname + '/../views/clientPage.html')); } } […]

对于node.js,express是否有.request()

我试图从下面的代码得到外部url的响应,但即时通讯没有运气。 有人可以澄清我做错了什么,并给出他们认为可能有用的指针。 var express = require('express'), require('events'); var app = express.createServer(); app.request({ host: "http://ws.audioscrobbler.com", port: 80, method: "GET", path: "/2.0/?method=artist.getsimilar&artist=bandname&api_key=b25b959554ed76058ac220b7b2e0a026" }).on('response',function(response) { console.log(response); }); app.listen(4000);

node.js + express + mongodb任何人都曾尝试使用快速'会话pipe理与副本集

我在用着 节点0.4.11 expression2.4.6 mongodb 1.8.3 mongoose2.1.2 connect-mongodb 1.0.0 并尝试使用身份validation来实现副本集。 我想在DB中存储不同types的应用程序数据 我想在数据库中存储快速的会话数据 与mongoose的一个“正常”连接工作: mongo.connectSet('mongodb://user:secret@host:27017/test, mongodb://host:27018, mongodb://host:27019, mongodb://host:27020', function (err) { if (err) { console.log("could not connect to DB: " + err); } }); 但是如何让会话pipe理工作?! app.use(express.session({ cookie: {maxAge: 60000 * 20}, // 20 minutes secret: 'foo', store: new MongoStore({ host: 'host', port: [27017, 27018, 27019, 27020], dbname: […]

创build一个具有用户信息的玉石默认布局

我正在创build一个使用express.js和jade的node.js项目。 我试图创build一个默认的布局,当用户login将显示他们的头像,新消息,和这样的东西。 这可能吗? 我已经尝试search谷歌,没有得到任何回报,甚至用django,rails等replace玉。谢谢你的考虑。

是否有可能同步进行摇篮调用?

我正在使用Express作为一个项目,我一直在使用摇篮来试用CouchDB数据库。 虽然asynchronous执行的想法是出于性能方面的原因,但是这使得我的代码对于需要在一行中进行多个数据库调用的例程来说确实是一团糟。 是否有可能不使用callback进行摇篮调用? 或者,我想更准确的说,有没有更好的方法来组织不涉及嵌套3或4个匿名函数的代码,以获得数据库查询结果? 这个代码只能在一个地方使用,所以使用只能调用一次的命名函数是没有意义的。