Tag: 表示

按标题searchMongoDB不是id

我试图让我的路线从博客应用程序的URL拉标题。 我得到它的工作使用id但无法弄清楚标题。 我知道我不能做findById() ,而是使用find() 。 我如何定制我的查询来查找标题。 路线 app.get("/blogs/:title", function(req, res) { Blog.find(req.params.title, function(err, foundBlog){ if(err){ res.redirect("/blogs"); } else { res.render("show", {blog: foundBlog}); } }); }); 模式 var blogSchema = new mongoose.Schema({ title: String, image: String, body: String, created: {type: Date, default: Date.now}, author: { id: { type: mongoose.Schema.Types.ObjectId, ref: "User" }, email: String } });

让vuejs在nodejs / express应用程序中呈现

我有一个nodejs / express js应用程序。 目前这是一个简单的4页的文本网站。 我用npm添加了vuejs并试图挂载它 import Vue from 'vue'; var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) 它不渲染,但输出 <!–function (a, b, c, d) { return createElement(vm, a, b, c, d, true); }–> CanI可以在节点上使用vuejs,如果有的话,我怎么把它渲染出来。 编辑:HTML(从.pug呈现) <div class="content"><!–function (a, b, c, d) { return createElement(vm, a, b, c, d, true); […]

通过nodejs中的电子邮件进行双向身份validation

你好,我正在与nodejs和expressjs进行双向authentication。 在我的网站,你将不得不先login。 如果login成功,用户将收到一封带有密钥和链接的电子邮件,他必须粘贴该密钥。 如果用户打开该链接并粘贴该密钥,我希望用户login。但是,当我在代码中调用passport.authenticate()函数时,用户没有login。 该方法成功redirect到用户页面,这意味着login成功,但仍然没有用户login。 router.post('/loginTwo/:token', function(req, res) { async.waterfall([ function(done) { User.findOne({ twoWayAuthentication: req.params.token, authenticationExpires: { $gt: Date.now() } }, function(err, user) { if (!user) { req.flash('error', 'password-token has expired'); return res.redirect('back'); } if (user.twoWayAuthenticationPassword == req.body.twoWayAuthenticationPassword) { user.twoWayAuthenticationPassword = undefined user.twoWayAuthentication = undefined; user.authenticationExpires = undefined; console.log(reqlogin.body); console.log(req.body); user.save(function(err) { passport.authenticate('local', { successRedirect: […]

如何确保在启动Express应用程序之前,Swagger文件中已经logging了API?

我的节点应用程序创build三个不同的快速服务器,每个服务器都在不同的端口上侦听 每个服务器都有一组不同的API,这三个服务器之间有一些共同点。 还有一个swagger.yaml文件,该文件应包含任何要发送的API的文档。 我想确保在启动应用程序之前将每个APIlogging在这个swagger文件中,并且如果有任何API被路由到服务器但没有logging,那么它将失败。 到目前为止,我已经尝试过各种中间件来validation和路由基于swagger文档的API。 不过,据我所知,validationfunction只检查swagger文件的任何语法或格式错误,路由完全更新基于swagger.yaml的应用程序的路线。 即以前的逻辑被删除。 例: let swagger = require('swagger-tools'); let YAML = require('yamljs'); let app1 = express(); let app2 = express(); let app3 = express(); //There is logic here that routes various endpoints to each app let swaggerDocument = YAML.load("./swagger/swagger.yaml"); swagger.initializeMiddleware(swaggerDocument, function (middleware) { app3.use(middleware.swaggerMetadata()); app3.use(middleware.swaggerValidator({ validateResponse: true })); app3.use(middleware.swaggerRouter({useStubs: true, contoller: […]

反应与快速后端和快速应用程序的应用程序

我目前有一个React应用程序(通过create-react-app )和一个用于我的API调用的Express服务器。 他们都分开运行,一直工作正常,直到我碰到这个问题: 我也使用express-session和passport进行用户authentication。 我能够authentication用户,但会话不会持续在API调用之间。 如果我成功login,下次进行API调用时, req.sessionID将会不同, req.isAuthenticated()将返回false 。 这是我的服务器代码: 'use strict' var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var mongoose = require('mongoose'); var passport = require('passport'); var session = require('express-session'); var cors = require('cors'); var flash = require('connect-flash'); var store = require('./store'); var database = […]

我怎样才能传递参数“用户名”到“/”路由器与快递?

我有一个数据库操作在login后路由器,当数据库操作callback成功,我有一个用户名值,以及如何可以传递这个用户名到“/”路由器? router.post('/login', (req, res)=> { var username = req.body.username; var password = common.md5(req.body.password + common.MD5_SUFFIX); db.query(`SELECT * FROM admin_table WHERE username='${username}'`, (err, data)=> { if (err) { console.log(err); res.status(500).send('database error').end(); } else { if (data.length == 0) { res.status(404).send('no this admin').end(); } else { if (data[0].password == password) { req.session['admin_id']=data[0].ID; res.redirect('/'); } else { res.status(404).send('This […]

mongoose – 通过标准在子文件中查找

我刚刚陷入这个问题。 我有两个mongoose模式: let userSchema = new mongoose.Schema({ username: { type:String, default:null }, email: { type:String, required:true }, role: { type: mongoose.Schema.Types.ObjectId, ref: 'Role', required: true }, }); let roleSchema = new mongoose.Schema({ name: { type:String, default:"Player" }, privileges: [ { resource: String , actions: [ String ] }, ], }); 问题si如何find具有特定条件的用户例如获取所有用户angular色名称=“超级pipe理员”我试着这个没有结果 User.find({'role.name':'Super Admin'}).populate('role') .exec() .then(results […]

Node / Express API,使用JWT令牌的电子邮件validation,意外的行为

一种奇怪的问题。 我正在构build一个NodeJS /快速API使用JSON Web令牌用户的电子邮件validation。 下面是用户注册和电子邮件确认路线的代码。 使用以下步骤在Postman中testing这些路由时,一切正常(状态200,用户对象返回):1.发送POST请求以创build用户。 2.使用mongodb shell从新用户获取令牌。 3.在获取请求中使用复制/粘贴令牌来确认路线。 然而,当实际点击通过电子邮件发送的链接时,数据库中的所有更新都是按照它的意思进行的,但是我得到了一个401错误。 即使从电子邮件中的链接复制并粘贴令牌并将其发送给邮递员也具有相同的结果。 路线: app.post('/api/users', (req, res) => { let body = _.pick(req.body, [ 'email', 'password', 'firstName', 'lastName', 'adminRequested' ]); let user = new User(body); user.save().then(() => { return user.generateAuthToken('confirmation', '1h'); }).then((token) => { let currentUrl = req.protocol + '://' + req.get('host') + req.originalUrl; let confirmationUrl = […]

会话variables被删除

我正在使用express-session在我的NodeJS应用程序中使用Express服务器进行会话处理。 我开发了一个特定端点的API来完成会话处理,保存用户发布的数据等。 我原来用香草HTML / CSS / JS(我所熟悉的)来testingAPI的应用程序的样机。 不过,我后来用React重新编写了前端,打到了我用最初的香草应用程序编写的所有相同的端点。 但是,当我尝试使用React前端将variables保存到快速会话对象时,该variables不会保留在req.session 。 例如,在成功login尝试时,我将包含用户名的uservariables保存到req.session 。 这工作正常,如果我loggingreq.session在这一点上的控制台,我看到对象内的variables。 但是,如果我然后击中另一个端点,并尝试访问req.session.uservariables,它不存在,虽然cookie对象停留在req.session 。 然而,我难住的是,当我使用React应用程序时,这个问题才出现。 当我使用使用静态HTML页面的前端访问同一端点时,可以从任何端点访问来自req.session的uservariables。 这个问题并没有出现,当我最初开发应用程序使用静态HTML页面与链接的JS文件进行AJAX调用发送/接收数据。 React应用程序在向服务器发送数据或从服务器接收数据时没有问题,但是从React应用程序调用服务器代码时执行的方式不同。 在Express应用程序运行的同一个实例中,这两个应用程序的运行方式不同。 我的代码保存uservariables: app.post('/login', (req, res) => { username = req.body.username; password = req.body.password; queryString = 'SELECT * FROM accounts WHERE username = "' + username + '";'; connection.query(queryString, function (err, result) { if(result[0] == undefined){ console.log("user […]

mongoosesorting和search文件由填充字段

我收集用户,新闻和用户新闻,“用户新闻”填充到“用户”和“新闻”。 我可以通过“user.name”或“news.title”来sorting和search“user-news”的文档吗? const usersSchema = new Schema({ name: String }) const newsSchema = new Schema({ title: String }), UsersNewsModel.find(queryObj) .populate('user', 'name') .populate('news', 'title') .sort({ 'user.name': -1 }) .exec((findError, records) => {…}