Articles of mongoose

如果文档的_id已经存在,如何将数组元素推送到数组,如果_id不存在,则创build新文档?

我使用Node.js , mongoose , mongodb , express和angular 。 我正在一个mongoose模型中保存一个调查答复。 很多人会提交特定调查的回复。 当第一个人提交调查答复时,我想为该调查创build一个新文档。 当第二,第三……等人提交同一调查答复时,我想添加数组元素只在以下模式的答复arrays。 当第一个人提交新调查答复时,我想为新调查创build一个新文档。 我怎样才能用mongoose做到这一点? 我在Mongoose.js中发现了类似的问题:如何实现创build或更新? 。 但是,在这里我想推新回复到下一个数组索引的答复[]如果find_id,否则创build一个新的文档 mongoose模型 : var mongoose = require("mongoose"); var Schema = mongoose.Schema; var MCQReplySchema = new Schema({ _id : String, surveyname: String, replies :[{ replierId : String, answers : [{ questionId : String, answer : String }] }] }); module.exports=mongoose.model('MCQReply',MCQReplySchema); […]

当mongoose模型被实例化时,应用程序变慢

我正在开发购物车,作为我学习的一部分。 我面临的问题是,每当物品添加到购物车时,装载时间将大大增加(基准如下),并在购物车为空时恢复正常。 基准 当购物车是空的时候:加载时间低于1s。 GET / 304 154.242 ms – – GET /stylesheets/bootstrap.css 304 81.079 ms – – GET /stylesheets/style.css 304 79.363 ms – – GET /fonts/font-awesome/css/font-awesome.min.css 304 84.550 ms – – GET /product/58c179fb2148643f5865d4ca/image 304 86.347 ms – – GET /product/58c151f95b18373990f1c714/image 304 113.943 ms – – GET /product/58c17c9e32f18e2eb86fbd44/image 304 120.220 ms – – GET /product/58c17ced9697ec3e44bba381/image […]

mongoose设置默认数组大小和值

我试图在我的mongoose模式中设置一个默认的数组大小和值,但是返回总是以[]出现,除非文档实际上有数据。 "transform": { type: [ Number ], default: [0, 0, 0] } 返回值是: "transform":[] 如何configuration我的模式,以便它返回: "transform":[0,0,0] 答 : required: true设置required: true将数据添加到创build的任何新文档。 旧文件不会被更新,但是。 "transform": { type: [ Number ], default: [0, 0, 0], required: true } 更新为了快速解决我的数据问题,我在Mongo上运行了一个更新,使用以下行升级所有现有的文档。 db.getCollection('objects').updateMany( { "properties.transform": []}, { $set: { "properties.transform" : [0,0,0] }} ); 注意:我的变换字段是属性的子元素,因此"properties.transform"

用express.js和mongoose声明会话

我正在用Node.js,Express,MongoDB(mongoose)做一个应用程序,我正在尝试使用server.js在一个单独的文件中build立数据库连接,但是我很难用connect-mongo。 首先在我的server.js我有这个: /* jshint esversion: 6 */ 'use strict'; let express = require('express'); const db = require('./app/config/db'); const routes = require('./app/routes/routes'); const users = require('./app/routes/users'); let app = express(); const conn = db.connect(); app.set('views', path.join(__dirname, 'app/views')); app.set('view engine', 'hbs'); … app.use('/', routes); app.use('/users', users); app.listen(3000); module.exports = app; 这只处理应用程序path和应用程序服务器,然后我有我的项目的下一个文件夹结构: myApp |___app |___bin |___config |___credentials.js |___db.js […]

Node Express Mongoose:编写API以通过多个可选参数search数据

我有一个searchinput框,用户应该可以通过员工ID或名字或姓氏进行search。 员工ID也是一个string。 我有称为configuration文件,具有员工信息的mongo模型。 我正在使用节点Express和mongoose。 我想有一个路由器接收id或名字或姓氏作为请求参数如下。 this.router.get('/name/:name', this.getMidSearchResults); private getMidSearchResults(req: Request, res: Response, next: NextFunction) { var nameRegex = {"$regex": new RegExp('^' + req.params.name.toLowerCase(), 'i')}; Profile.find({ mid: nameRegex } || {firstName: nameRegex} || {lastName: nameRegex}, function(err, data) { if (err) throw err; res.send(data); }); }

连接到mongo容器使用节点获取MongoError

出于某种原因,我无法使用其他本主题上的stackoverflowpost工作。 我得到: MongoError: failed to connect to server [localhost:27017] on first connect 。 我开始了我的docker集装箱,并检查mongo是否工作: $ docker run –name my-mongo -d mongo $ docker exec -it my-mongo bash # mongo MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.2 Server has startup warnings: 2017-03-19T01:23:53.047+0000 I STORAGE [initandlisten] 2017-03-19T01:23:53.047+0000 I STORAGE [initandlisten] ** WARNING: Using […]

如何通过mongoose中的单个键迭代多个值

我有一个使用MongoDB作为数据库的Web应用程序,我试图迭代通过一个单一的属性,护照内的多个值。 这是我的模式: var EmployeeDBSchema = new Schema({ /* Passport tab schema */ passportInfo: { passportDetails: [] }, 这就是Robomongo的外观: 我试着检查,如果这可以作为一个数组检索,所以我做了下面: console.log(_.map(results, _.property('passportInfo'))); passportArr = _.map(results, _.property('passportInfo')); console.log("is passport array? " + _.isArray(passportArr)); 结果: 现在,因为它是积极的,我试着迭代通过它像一个正常的数组使用ff。 码: _.forEach(passportArr, function (value, key) { _.forEach(passportArr[key], function(value2, key2){ console.log(key2 + " >> " + value2); }); }); 但是,我得到的是这样的: 我怎样才能得到passportExpiry,passportNumber和countryOfOrigin的值? 我真的很难过这个。 希望有人能帮助。 […]

mongoose:find具有特定条件的文件

我正在编写一个新闻网站。 我为特定的作者/记者做了一个专门的页面。 此页面将包含他/她的所有post。这里是代码: 在app.js中, app.get("/author/:id", function(req,res) { //latest contains all posts Latest.find({author:"Richard Mann"}).sort([['_id', -1]]).exec(function(err,allLatest) { if(err) { console.log(err); } else { res.render("showAuthor", { latest : allLatest}); } }) }) 此代码正常工作,并显示特定作者的post。 但是,如何为所有作者做到这一点(同时避免DRY代码)? 在find指定作者的文档时,我应该申请什么条件?

mongoose填充多个文件不起作用?

以下是我的模特。 我想从碎片集合中填充数据到我的stream中。 stream: var mongoose = require("mongoose"); var mongoosePaginate = require('mongoose-paginate'); var Schema = mongoose.Schema; // Declare schema var streamSchema = Schema({ user_id: { type: String, required: true }, public_key: { type: String }, private_key: { type: String }, title: { type: String, required: true }, description: { type: String, required: true }, particle: [{ […]

在node.js中授权

编码一个新闻网站,我试图进行授权,只有作者(谁发布文章)能够编辑和删除它们(这些button出现在页面的底部,并为所有的用户可见)。 但是,有一些新闻/网站没有login/注册选项。 例如: http : //www.denofgeek.com/us 。 因为他们没有authentication,这是否意味着他们没有授权? 如果作者的设置与其他用户相同,他们如何编辑/删除文章? 码: app.get("/blog/:id/:title/edit", function(req,res) { Blog.findById(req.params.id, function(err, foundBlog) { if(err) { res.redirect("/blog"); } else { res.render("editBlog", {blog : foundBlog}); } }) }) //UPDATE BLOG app.put("/blog/:id/:title", function(req,res) { req.body.blog.body = req.sanitize(req.body.blog.body); Blog.findByIdAndUpdate(req.params.id, req.body.blog,{new: true}, function(err,updatedBlog) { if(err) { res.redirect("/blog"); } else { res.redirect("/blog/" + req.params.id + "/" + […]