Articles of javascript

未定义的socket.io错误不是一个函数

在服务器上安装了websocket和socket.io。 当我加载浏览器页面,我得到这个错误在控制台:未捕获TypeError:undefined不是一个函数(socket.io-1.2.1.js:1) 这里是服务器端代码: // Require HTTP module (to start server) and Socket.IO var http = require('http'), io = require('socket.io'); // Start the server at port 9602 var server = http.createServer(function(req, res){ // Send HTML headers and message res.writeHead(200,{ 'Content-Type': 'text/html' }); res.end('<h1>Hello Socket Lover!</h1>'); }); server.listen(9602); // Create a Socket.IO instance, passing it our server […]

Node.js和Multer – 在callback函数(req,res)中处理上传文件的目的地

我在Node.js是一个新手,最近我遇到了一个非常简单的问题。 我正在使用一个名为multer的模块,所以用户可以上传图片。 在我的networking应用程序中,所有的用户都有一个唯一的ID,我希望上传的图像被存储在一个根据他们的ID命名的目录中。 例: .public/uploads/3454367856437534 这是我的routes.js文件的一部分: // load multer to handle image uploads var multer = require('multer'); var saveDir = multer({ dest: './public/uploads/' + req.user._id, //error, we can not access this id from here onFileUploadStart: function (file) { return utils.validateImage(file); //validates the image file type } }); module.exports = function(app, passport) { app.post('/', saveDir, function(req, […]

NodeJS最佳实践:stream量控制错误?

在Node.js中,我应该使用错误进行stream量控制,还是应该使用它们更像是exception? 我正在编写身份validation控制器和Sails.js中的一些unit testing,目前,我的注册方法检查是否存在具有相同用户名的用户。 如果一个用户已经存在用户名,我的模型方法用一个新的Error对象调用它的callback参数,如下所示: 模型: exists: function (options, cb) { User.findOne({ where: { username: typeof options === 'Object' && options.username ? options.username : options }, }).exec(function (err, user) { if (err) return cb(err); if (user) return cb(new Error("A user with that username already exists.")); cb(null, !!user); }); }, 控制器: User.exists(req.body.user.username, function (err, exists) { if […]

$ addToSet一个对象到一个数组在mongoose

我有一个存储一些产品文件的集合。 在文档中,有一个数组evaluation来存储用户对产品的价格评估对象。 这里是一个用户对象的例子: var data = {user_id:90,price:400} 任何人都可以告诉我,如果有可能在evaluation数组上做一个“插入重复更新”? 我已经尝试了$addToSet ,但是当一个对象被推入evaluation ,有一个_id属性被添加到用户对象,即使我没有在模型中,像这样: { "_id": 54b13f52604fc5d242d4aa68, "__v": NumberInt(0), "evaluation": [ { "price": NumberInt(14616), "user_id": NumberInt(91), "_id": ObjectId("54b13f5e604fc5d242d4aa6b") // Why is it added? }, { "price": NumberInt(16211), "user_id": NumberInt(92), "_id": ObjectId("54b140d1604fc5d242d4aa74") // } ], "product": [ { "title": "ABC", "model_id": "382", "id": "513", "category": "1", "src": "xxx.jpg" } […]

如何修复bookshelfjs事务中的嵌套结构

我想在单个书架交易中更新多个数据库表。 我可以使用一些帮助重构我的代码。 我是新来的节点,并没有很好的理解承诺,但下面的嵌套结构不是很漂亮,我希望有一个更干净的方式。 任何帮助,将不胜感激。 function insertUser(user, cb) { bookshelf.transaction(function(t) { var key = user.key; Developer.forge({key: key}) .fetch({require: true, transacting: t}) .then(function(developerModel) { var devID = developerModel.get('id'); Address.forge(user.address) .save(null, {transacting: t}) .then(function(addressModel) { var addressID = addressModel.get('addressId'); Financial.forge(user.financial) .save(null, {transacting: t}) .then(function(financialModel) { var financialID = financialModel.get('financialId'); var userEntity = user.personal; userEntity.addressId = addressID; userEntity.developerId = […]

Promise findOneAsync variable = {“isFulfilled”:false,“isRejected”:false}?

使用蓝鸟Promisfymongoose,我有一个Promise.map(函数与一系列if / else循环通过一个数组,以查看引用文档是否存在,否则创build一个.. 将findOneAsync的产品分配给一个variables,然后将“variable._id”分配给制作中的新文档(主承诺),控制台日志{"isFulfilled":false,"isRejected":false} 这是一个片段: for (i=0; i<items.length; i++) { var existingItem = Models.Items.findOneAsync({ item: items[i] }); console.log( "existingItem : "); console.log( JSON.stringify(existingItem) ); console.log( "existingItem._id : " + existingItem._id ); 这是一个日志: existingItem : {"isFulfilled":false,"isRejected":false} existingItem._id : undefined 为什么可能为Model.Item.findOneAsync挂起existingItemvariables?

Node.js – 模块导出静态variables

我试图导出一个模块,该模块应该存储给定信息的散列表,以便可以检查另一个访问该信息的调用是否存在于散列表中,如果find,则返回散列表中的值。 我无法获得导出的哈希表在整个应用程序中保持一致,作为单例/静态/全局variables。 这是我有: var Randomize = { hashTable: [], randomize: function(rows) { var randomized = []; for(var i in rows) { //check if exists in hashtable, use values accordingly } return randomized; } }; module.exports = Randomize; 当我尝试访问它时: var randomize = require('randomize'); /* … */ console.log(randomize.randomize(rows)) 它为每个实例创build一个新的散列表。 我怎样才能使它重用哈希表的同一个实例?

如何保持express req.session对象?

我对学习Node和Express非常陌生,而且我仍然试图用代码来绕过代码stream。 假设我们在session.js中有这样的代码: app.post('/session', notLoggedIn, function(req, res) { User.findOne({ username: req.body.username, password: req.body.password }, function (err, user) { if (err) { return next(err); } if (user) { req.session.user = user; res.redirect('/users'); } else { res.redirect('/session/new'); } }); }); 假设用户是必需的mongo模式。 我觉得奇怪的是session.user分配: req.session.user = user; 由于reqvariables在redirect之后会超出范围,但是我们显然正在做这个来保存用户数据,所以我只想知道下面的哪个场景描述了正在发生的事情。 (A)被分配给req参数的参数(当调用callback时)被存储在/仍然在堆栈上的某个地方,(B)会话被存储在堆栈上并被分配给一个新的req对象(C)与B相同,但在用户领域(似乎不太可能,也许在我的部分)。

AWS S3 JavaScript SDK getSignedUrl仅返回基本path

我有一些非常简单的代码来生成一个S3的URL。 我从SDK获取的URL只有S3的基本path。 它不包含任何其他内容。 为什么发生这种情况? var AWS = require('aws-sdk'); var s3 = new AWS.S3(); console.log(s3.getSignedUrl('getObject', { Bucket: 'test', Key: 'test' })); // Returns "https://s3.amazonaws.com/" Node.js v0.12.0,AWS SDK 2.1.15或2.1.17,Windows 7 64位,

Sequelize hasMany通过另一个表

好的,我有以下三种models 模块: var Module = sequelize.define('module', { id: DataTypes.INTEGER, name: DataTypes.STRING, description: DataTypes.STRING, category_id: DataTypes.STRING, module_type_id: DataTypes.STRING, gives_score: DataTypes.INTEGER, duration: DataTypes.STRING, price: DataTypes.STRING }, { freezeTableName: true} ) 权限: Competence = sequelize.define('competence', { id: DataTypes.INTEGER, name: DataTypes.STRING, organization_id: DataTypes.INTEGER, competence_type_id: DataTypes.INTEGER },{freezeTableName:true}) Module_has_competence: Module_has_competence = sequelize.define('module_has_competence', { id: DataTypes.INTEGER, module_id: DataTypes.INTEGER, competence_id: DataTypes.INTEGER, score: DataTypes.STRING […]