Tag: 表示

如何删除mongoose文档并从另一个模型引用它?

我有以下模式: const userSchema = new Schema({ email: { type: String, unique: true, lowercase: true }, password: String, favorites: [{ type: Schema.Types.ObjectId, ref: 'image' }] }) const imageSchema = new Schema({ description: String, title: String, url: String }) 当我添加一个图像,我添加一个新的图像文档,然后我findlogin的用户,并更新他的collections夹,如下所示: exports.addImage = function(req, res, next) { const email = req.user.email; imageData = req.body; imageData.url = req.body.media.m; const […]

在nodejs中执行sql查询时返回未定义的值

我从我的数据库中获取表中的值: 我的代码: function listshops(callback) { client.connection.query('select * from shop',function(err,rows){ if(rows.length>0) { for(var i=0;i<rows.length;i++) { var shopIdFetched = rows[i].shopId; client.connection.query('select * from image where shopId=?',shopIdFetched,function(err,data){ if(data.length > 0){ console.log(rows[i],data); } }); } } }); } 但是当显示结果时,第一个查询显示一个未定义的值。 当我给行[0]和行1的值正在提取。 但是我需要实现行[我]。

我怎么能包装每一个快递路线处理程序与另一个function

基本上我想代替这个… app.get(routes.test, function(req, res, next){ actualRouteHandler(req, res, next) // Always returns a promise or throws. .catch(function(err) { next(err); }); }); 有这个: app.get(routes.test, catchWrap(actualRouteHandler)); 或者类似的东西,我试着弄乱fn.apply和东西,但我找不到一个方法来传递actualRouteHandler正确的参数(请求,水库,下一个),仍然有function。 我是否需要返回一个函数或类似的东西? 编辑:我认为可能有这样做的库,但我们没有访问这一点代码中的实际expression应用程序。

为什么在Node.js上表示“连续”处理http请求?

我尝试了两个代码。 我只是同时从两个浏览器访问这些程序。 在Sample1中,res.send在全部处理之后执行,并且是一般的实现。 我的意思是,这些“setTimeout”可以是数据库访问或类似的东西。 在Sample2中,首先执行res.send,然后执行其余的处理。 根据Sample1的输出,每个http请求都被串行处理。 所以如果有人在同一时间访问这个网站,他们需要等待每个以前的人。 起初,我认为这是因为Node.js连续处理所有东西。 但是根据Sample2的结果,我发现这是错误的理解。 从结果来看,Node.js可以同时处理一些包含setTimeout之类的非阻塞代码的函数。 所以我不明白为什么快递是这样实施的。 因此,我们需要使用像PM2一样的Cluster来同时处理一些http请求。 你能教我为什么expression这样的方式? 处理一些http请求的唯一解决scheme是使用Cluster? 样本1 var express = require('express'); var app = express(); app.get('/', function (req, res) { var id = Math.floor(1000*Math.random()) console.log('0 – ' + id) setTimeout(()=>{ console.log('1 – ' + id) setTimeout(()=>{ console.log('2 – ' + id) setTimeout(()=>{ console.log('3 – ' + id) […]

错误:找不到模块'../build/Debug/sqlclient'

在目录中我做了standard-npm安装mariasql – 保存。 当我运行我的服务器文件-node app.js. 它返回一个这样的错误: Error: Cannot find module '../build/Debug/sqlclient' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/home/asa/Dropbox/justRent/development/node_modules/mariasql/lib/Client.js:12:11) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17)

Express.js – 路由文件中的导出/访问function

我正在尝试导出path文件中的function。 这是我的代码 app.js文件 var express = require('express'); var bodyParser = require('body-parser'); var users = require('./routes/users'); var others=require('./routes/others') var app = express(); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/others', others); app.use('/users', users); module.exports = app; others.js文件 var express = require('express'); var router = express.Router(); router.post("/test", function […]

代理和redirect有什么区别?

我想提供所有来/到/api/请求。 例如, /posts/应被视为/api/posts/ 据我所知这是代理,但我不确定代理和redirect之间的区别。 主要的困惑来自这样一个事实,即当代理将其设置为200时, redirect将响应头的状态码设置为302 。 代理之间的区别是什么,什么是我做我想做的最好的方式?

expression中间件的一个奇怪的执行结果

我的代码: var http = require("http"); var express = require("express"); var app = express(); app.set('port',3332); app.get('/',function(req,res,next){ res.send('OK'); next(); }); app.use(function(req,res,next){ console.log('middleware 1'); next(); }); app.use(function(req,res,next){ console.log('middleware 2'); }); http.createServer(app).listen(app.set('port'),function(){ console.log('nodejs start listen 3332 port!'); }); nodejs服务器输出:nodejs启动监听3332端口! 中间件1 中间件2 中间件1 中间件2 为什么每个中间件都被解雇了2次,谁能帮我解释一下。 我知道如果在app.get()移除next() ,它将被触发一次。 中间件链是一个环形链吗?谢谢。 修改代码,在上一个app.use()添加next() app.use() 。 还有一个问题: var http = require("http"); var express = require("express"); […]

mongoose:.save不是一个函数

我是非常新的,我已经浏览了档案,但是这个代码里面发生了什么事情,这让我无法回避。 我使用快速生成器来创build一个日历应用程序,现在我想把它连接到MongoDB。 到Mongo的实际连接正在工作,但我无法保存文档。 我的global.js (我正在运行我的前端Javascript)的相关部分如下所示: $(document).ready(function() { var ev = new Event({ date: "a6_13_2016", time: 900, description:"Fencing"}); ev.save(function(err) { if (err) console.log(err); else console.log("Success!") }) 这是我得到的“TypeError:ev.save不是一个函数”的消息。 我的模型/ Events.js看起来像这样: var mongoose = require('mongoose'); var eventSchema = new mongoose.Schema({ date: String, time: Number, description: String }); module.exports = mongoose.model('Event', eventSchema); 我的路线/ events.js看起来像这样: var express = require('express'); var […]

如何安装expression框架

我在Windows中,我已经安装了node.js。 现在我需要安装快速框架,所以我在控制台(cmd)中: npm install express –save 我怎么读这个: http://www.tutorialspoint.com/nodejs/nodejs_express_framework.htm 但是我得到这个错误: npm ERR! Windows_NT 6.3.9600 npm ERR! argv "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x8 6)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "express" "–save" npm ERR! node v4.4.7 npm ERR! npm v2.15.8 npm ERR! code E403 npm ERR! unregistered users are not allowed to access package express : express npm ERR! npm ERR! […]