Tag: mongoose

Nodejs模块安装错误:请求path包含非转义字符

我是新的nodejs,NPM,不知道为什么我得到这个错误。 任何猜测? 我试过这个,但是没有奏效 npm install -g mongoose 1220 http GET https://github.com/mongodb-js/node-pre-gyp/archive/v0.6.5-appveyor.tar.gz 1221 error TypeError: Request path contains unescaped characters. 1221 error at new ClientRequest (_http_client.js:73:11) 1221 error at Object.exports.request (http.js:49:10) 1221 error at TunnelingAgent.exports.request (https.js:136:15) 1221 error at TunnelingAgent.createSocket (C:\software\nodejs\node_modules\npm\node_modules\request\node_modules\tunnel-agent\index.js:117:25) 1221 error at TunnelingAgent.createSecureSocket [as createSocket] (C:\software\nodejs\node_modules\npm\node_modules\request\node_modules\tunnel-agent\index.js:184:41) 1221 error at TunnelingAgent.addRequest (C:\software\nodejs\node_modules\npm\node_modules\request\node_modules\tunnel-agent\index.js:80:8) 1221 error at […]

使用节点和mongoose将新的mongoDB文档从数组中取出的最好方法是什么?

我正在使用MeanJS,用户input每个需要创build一个新文档的对象列表。 同时,我需要创build另一个单独的文档,指向数组中的每个对象,并将每个对象链接回这个新文档。 所以最终的结果需要是模型“Q”的任意数量的文档,它们与模型“S”的另一个文档相关联。 我试图这样做的原因是让用户创build一个问题的调查。 每个问题都将是自己填写“调查”的对象(作为一个属性,将包含这些问题ID的列表)。 S = {"_id": 0, "Qids": [ObjectId("1"), ObjectId("2"), ObjectId("3"), ObjectId("4")]} Q1 = {"_id": ObjectId("1"), "Sid": ObjectId("0")} Q2 = {"_id": ObjectId("2"), "Sid": ObjectId("0")} Q3 = {"_id": ObjectId("3"), "Sid": ObjectId("0")} Q4 = {"_id": ObjectId("4"), "Sid": ObjectId("0")} 我的问题:我似乎无法做到这一点没有遇到callback的问题。 有人可以给我一些build议吗? 这就是现在的样子: 客户端: $scope.Qlist = [Q1, Q2, Q3, Q4]; $scope.S = {}; $http.post('/S', $scope.S).success(function(data){ var req_obj […]

在MongoDB中使用两个不同的模式的populate()

我有两个MongoDB集合 – 评论 var mongoose = require('mongoose'); var CommentSchema = new mongoose.Schema({ body: String, author: String, upvotes: {type: Number, default: 0}, post: { type: mongoose.Schema.Types.ObjectId, ref: 'Profile' } }); mongoose.model('Comment', CommentSchema); 和用户 var mongoose = require('mongoose'); var UserSchema = new mongoose.Schema({ userName: String, userJobRole: String, userEmail: String, userPhone: String, userTimeZone: String, post: { type: mongoose.Schema.Types.ObjectId, […]

ExpressJSdynamic生成的页面 – search引擎是否会根据查询参数创build列表?

我正在创build一个地理区域内的当地企业目录网站。 希望是,如果你search“纽约市的水pipe工”,那么你会看到一个域的链接,将显示在纽约市10英里半径范围内的所有pipe道工logging。 假设我有这样的路线: app.get('/location', function(req, res) { if (req.query.zip) { // Search by zip code mongoose.model('cities').find({zipCode: req.query.zip}, function(err, entries) { if (err) throw err; res.render('location.ejs', {data: entries}); }); } }); 因此,像“ http://www.example.net/location?zip=10001 ”这样的传入url会从10001邮政编码(纽约市)中提取logging,一个页面将显示该区域中的所有条目。 它会生成与查询stringzip关联的城市的h1标签,标题等。 由于该页面将根据url参数dynamic生成,search引擎是否能够抓取每个可能的邮政编码并创build精确的search列表? 换句话说,search引擎是否足够聪明,可以根据上面的例子,在我的网站上显示像“纽约市的公司”这样的列表?

在javascript中维护for循环中的http请求的顺序

我正在尝试使用node.js express和mongoose(MEAN堆栈)保存MongoDB中的对象数组。 但是,当我在数组中的每个项目的前端进行http post请求时,它们不会按顺序显示在后端。 以下是我在前端的内容: $scope.postThenPost = function() { $http.post('/collection', $scope.doc).success(function(data){ for (var i = 0; i<$scope.array.length; i++) { var req_obj = { thing: $scope.array[i] }; $http.post('/collection2', req_obj); }; }; }; 并在后端,expression运行这个张贴到/ collection2: exports.create = function(req, res) { var q = new q(req.body.thing); q.save(function(err) { if (err) { return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); } else […]

mongoosePre命令不按预期工作

嗨,我是新来的mongoose试图使用pre命令转换给定的密码在string哈希值之前,将其保存在数据库中。 我没有得到任何语法错误,但我的密码没有被转换成散列IDS。 我的控制器代码如下: User.save(req.body,function(err,data){ if (err) { res.json({ sucess:false, exception:err }); } else{ res.json({ sucess:true, User:data }); } }); User.pre('save',function(next){ bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt){ if(err){ return res.json({ success:false, exception:err }); } bcrypt.hash(password, salt, function(err, hash) { if(err){ return res.json({ success:false, exception:err }); } password=hash; }); }); next(); }); 使用节点检查器,我发现命令行不进入User.pre。所以有人可以让我知道我犯了一个错误。

在MAC上安装bcrypt

我正在写这个问题,以便它可以帮助任何人面临同样的问题。 假设你已经安装了nodejs,并且对你的账户有适当的sudo权限。 按下COMMAND + T,进入terminal 1)键入: npm install -g node-gyp 2)键入: npm install bcryptjs 3)转到你的mongoose模式模型,例如models / user.js和 直接在var mongoose = require('mongoose')添加 var bcrypt = require('bcryptjs');

从JSON创build一个mongoose模式

我开始玩node.js,expression,mongo和所有那些好东西。 我无法弄清楚如何为这样的JSON文件定义mongoose模式: [ { "artist" : "Lorem", "profile-picture": "/lorem.jpg", "bio": "Lorem ipsum dolor sit amet, consectetur.", "songs": [ { "id": 0, "name": "Lorem ipsum", "url": "/lorem.mp3", "length": 34, "rating": { "likes": 3, "likes-timestamps": [ 1436822318, 1436822321, 1436822334 ] } } ] } ] 在我遇到的每一个教程中,都是这样简化的: MySchema = new Schema({ name: String }); 而且我不知道如何嵌套这些对象和数组,等等。

mongo和mongoose不同的行为?

在mongo shell中,我可以这样做: db.getCollection('usercourses').update({ _id:ObjectId("54bee7c6ababf28b4ea5a07f")}, { $unset:{ 'steps.0.topic':'' } }, {strict:false}) 它会从find的文档中删除数组内的对象的“主题”字段。 但是当我用mongoose做这个时: function() { return UserCourses.findQ() .then(function(uCourse){ return Q.all(uCourse.map(worker)) }).catch(function(error) { console.log(error); }); } function worker(uCourse) { return Q.all(uCourse.steps.map( function(step,i){ var field1 = 'steps.'+i+'.topic'; return UserCourses.updateQ({_id:uCourse._id}, { $unset:{field1:''}, }, {strict:false}); } )) } 什么都没发生。 为什么?

将MongoDB查询结果转换成JSONArray

我有一个通过mongoose的MongoDB查询,结果是: [ { "tablename": "name1" }, { "tablename": "name2" } ] 但我需要它作为JSONArray: { "tablename": [ "name1", "name2" ] } 有没有简单的方法来转换?