Tag: 表示

mongoose不保存数据

我遇到了一个简单的查询我的数据库的麻烦。 按照这个教程: https : //scotch.io/tutorials/build-a-restful-api-using-node-and-express-4当Model.find()被调用时,他会收到一个带有名称字段的JSON对象(唯一的自定义字段)和_id和__v。 当我这样做时,我所收到的是_id和__v字段。 我确实得到了一个成功的回应,说这个post是创build的,但是它不包含标题或内容字段。 然而,一个查询显示数据从未被保存过。 路由和查询: var express = require("express"); var router = express.Router(); var Post = require("../app/models/post.js"); /* Drop Post collection Post.remove({}, function(err, num_docs) { if (err) { res.send(err); } else { console.log("Collection dropped, documents deleted: " + num_docs); } }); */ // Middleware for all routes. router.use(function(req, res, next) { […]

无法在nodeJS中validation用户:TypeError:无法使用“in”运算符在fs中search“用户名”

我有一个简单的表单来注册/validation用户。 我能够成功注册一个用户,但无法进行身份validation。 我试图研究这个问题,但我还没有find任何可以帮助的东西。 这里是htmllogin表单: <form method="post" action="/login"> <input type="text" name="username" placeholder="username"> <input type="password" name="password" placeholder="password"> <input type="submit" name="submit" value="submit"> </form> 当用户按下submitbutton时,我的控制台上显示如下: TypeError: Cannot use 'in' operator to search for 'username' in fs at model.Document.$__buildDoc (/Users/userA/Desktop/loginapp/node_modules/mongoose/lib/document.js:207:39) at model.Document (/Users/userA/Desktop/loginapp/node_modules/mongoose/lib/document.js:61:20) at model.Model (/Users/userA/Desktop/loginapp/node_modules/mongoose/lib/model.js:45:12) at new model (/Users/userA/Desktop/loginapp/node_modules/mongoose/lib/model.js:2957:11) at Strategy.model [as _verify] (/Users/userA/Desktop/loginapp/node_modules/mongoose/lib/model.js:2956:14) at Strategy.authenticate (/Users/userA/Desktop/loginapp/node_modules/passport-local/lib/strategy.js:90:12) at attempt […]

node.js i18n .__不是一个函数

我正在尝试在我的testingnode.js / express4服务器API中使用i18n 我安装了i18n-2,并更新了我的server.js var express = require('express'); var app = express(); var i18n = require('i18n-2'); i18n.expressBind(app, { // setup some locales – other locales default to en silently locales: ['en', 'fr'], // set the default locale defaultLocale: 'fr', // set the cookie name cookieName: 'locale' }); // set up the middleware app.use(function(req, res, next) […]

手动链接Express中间件

我目前使用2个中间件: Express-jwt ,它从请求中提取/validationJsonWebToken,我自己的中间件检查JWT是否包含特定的信息(权限)。 我想一起有条件地使用这些中间件(根据路线上是否有特定的招牌属性)。 我想要做这样的事情: let expressjwt = function(req, res, next) { … }; let jwtValidator = function(req, res, next) { … }; app.use((res, req, next) => { if(req.swagger.someAttribute) { expressjwt(req, res, jwtValidator(req, res, next)); // The issue here is that jwtValidator will get called even if // expressjwt produces an error } else { […]

使用promises / deferasynchronous迭代一组文件

我的目标是迭代文件目录,对每个文件运行一些操作,并返回包含目录子集的json对象。 我得到它在Node的fs库中使用同步版本的调用,但我想找出最好的asynchronous解决scheme。 我在一个asynchronous版本失败的尝试是使用Q库推迟下面。 无论我做什么,我都无法推迟最后一步,直到迭代完成。 迭代成功完成,但不是在调用sendResponse()之前。 任何人都可以帮助我了解我在做什么错? router.get('/mediaTree', function(req, res){ var mediaTree = { "identifier" : "id", "label" : "name", "items" : []}; var idCounter = 1; var fs_readdir = q.denodeify(fs.readdir); fs_readdir(MEDIAPATH) .then(function(files) { files.forEach(function(dir) { fs.stat(MEDIAPATH + dir, function(err, stats) { if(err) { console.log(err); return; } var thisFile = {}; if(stats.isDirectory()) { thisFile.id = idCounter++; […]

如何在反应渲染函数内使用ejsvariables?

我将一个variablesabcd传递给我的index.ejs,然后调用一个响应js文件来呈现index.ejs页面。 我已经能够访问index.ejs中的<%= abcd %> ,但不能在react的render函数中访问。 你能帮我吗? 谢谢

为什么app.use(…)不能在asynchronous函数中声明?

我正在尝试使用express框架来设置node.js服务器并实现会话。 这工作: var express = require('express'); var session = require('express-session'); var redis = require('redis'); var server = express(); var redisClient = redis.createClient(); server.use(session({secret: 'mySuperSecretKey'})); server.listen(8000, function () { console.log('listening…'); }); server.get('/', function (req, res) { req.session.aSessionEntry = 'value'; res.send('Your session entry is' + req.session.aSessionEntry); }); 但是,当我声明server.use(会话(…))在一个asynchronous函数,它被忽略 – 会话处理不再工作。 这里 : var express = require('express'); var […]

在Node request.headers中设置授权

我试图发送一个Passport-Locallogin请求到客户端,由Satellizer进行分析,我希望从服务器端发送一个授权令牌。 不幸的是,在request.headers没有密钥authorization : { host: 'localhost:3000', connection: 'keep-alive', 'cache-control': 'max-age=0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' } loginfunction在这里redirect,这是调用ensureAuthenticated()地方。 app.get('/main', ensureAuthenticated, function(req, res, next){ res.render('main.ejs', { token: createSendToken(req.user, config.secret), id: req.user._id, username: req.user.username, authorization: req.user.authorization }); }); ensureAuthenticated()然后分析login请求,并确保令牌匹配: function ensureAuthenticated(req, res, next) { if (!req.headers.authorization) { return res.status(401).send({ message: 'Please make sure your request has an Authorization header' }); } […]

Browsersync中间件:从发布请求redirect

我们正在开发中使用浏览器同步。 对于付款确认,付款提供商回复预定义的url。 问题是,Browsersync只显示Cannot POST /payment/success 。 所以我正在考虑编写一个接受POST请求并redirect到GET请求的同一个URL的中间件。 问题是,我不确定这是否可能与浏览器同步。 当我尝试调用res.redirect('/')会抛出一个错误: browserSync.init server: baseDir: "…." index: "/statics/master.html" middleware: [ modRewrite(['!\\.\\w+$ /statics/master.html [L]']), (req, res, next) -> res.redirect('/') # this throws a TypeError: res.redirect is not a function ] 为什么没有定义res.redirect ? 我以为浏览器同步是基于快递? 我怎样才能访问发布请求的正文? req.body返回undefined

将req.body分配给一个variables

我试图从传单层发布数据,然后通过express运行,并使用第三方模块返回一个数组。 如果我在这样的电话中规定了所需的ID forecast = msw.forecast(1) 它工作正常。 当我尝试使用来自post请求的spot_id时,它给了我这个: TypeError: Cannot use 'in' operator to search for 'units' in 1 这是我在我的node.js服务器上使用的。 任何帮助将非常感激。 var express = require('express'); var app = express(); var msw = require('msw-api'); var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); msw.set({ apiKey: 'my-api-key' , units: 'UK' }); app.post('/', function(req, res){ spot_id = req.body.spot_id forecast = msw.forecast(spot_id).then(function […]