Articles of mongodb

mongoosefindOne里面循环

我有一个document Users将storage属性定义为引用其他document称为Storage的ObjectId数组。 我想获得一个特定的用户,然后返回数组内的存储信息。 这是我的代码: module.exports.storageDetail = function(req, res) { User.findOne({'userId': req.user.userId}, 'storages').then(function(data){ var storageArray = []; data.storages.forEach(function(record){ Storage.findOne({_id: record}, function(err, storage){ storageArray.push(storage); }); }); return Promise.all(storageArray); }).then(function(storageList){ res.render('storage_template', { storage: storageList }); console.log(storageList); }); } 但执行后, storageList是一个空数组。 我是node.js的新手,请告诉我是否需要提供更多信息。

在mongodb / node中存储敏感数据

我正在开发一个项目,要求我的networking应用程序从用户那里收集敏感信息(例如驾照的照片)。这是通过在Angular上进行file upload完成的,我计划将这些图像作为二进制数组存储在MongoDB中。 我也在考虑直接在服务器上使用node.js(busbuy或fs我相信)来存储图像,并在服务器中存储图像的引用(在两种情况下,API点都实现了适当的访问控制)。问题是。我不知道这两种方法会有多安全。 像密码一样,我不认为存储敏感数据(DL,SSN)的“原始/原始”图像在任何意义上都是安全的。 什么是保护敏感图像在服务器上存储的方法?

返回date范围内的数组文档

是否有可能连锁finById() , select()和find()在mongoose? 我正在尝试这样的事情,它不接受date,而只是返回在familyStats集合中的所有对象。 module.exports.getFamilyStatsPast = function (req, res) { var id = req.params.id; var days = req.params.days; var pastDate = new Date(); pastDate.setDate(pastDate.getDate() – days).toISOString(); var currentDate = new Date().toISOString(); Worksets .findById(id) .select('familyStats') .find({ createdOn : { $gte: pastDate, $lte: currentDate } }) .exec(function (err, doc){ var response = { status: 200, message: [] […]

查找与顺序无关的嵌套数组的完全匹配

假设这些数据: { "_id" : ObjectId("594d43d1da7887921c701575"), "hashSets" : [ { "data1" : [ "2bf2cededea424f47d64d33c511dd431", "40499da7ee1456a2f79dc39a718aaf9b" ], "data2" : [ "b068931cc450442b63f5b3d276ea4297", "16ebd6af0cadece819da7468a9fd79f4", "8717cfca734e8987971f63b20eeb8024" ] }, { "data1" : [ "098F6BCD4621D373CADE4E832627B4F6", "5A105E8B9D40E1329780D62EA2265D8A", "AD0234829205B9033196BA818F7A872B" ], "data2" : [ "8AD8757BAA8564DC136C1E07507F4A98" ] } ], "__v" : 0 } 我正在尝试查询“hashSets”上的完全匹配,但“hashSets”数组中对象的顺序可能不同,并且数据数组中哈希的顺序可能有所不同。 我发现这个post有点类似: MongoDB查找精确数组匹配,但顺序无关紧要 虽然使用$ size和$ all是有道理的,但我不太清楚如何将它应用于嵌套的数组/对象。 我正在使用这个简单的查询,但似乎命令必须是相同的: db.analysis.find({hashSets:input.hashSets}) 编辑:为了清晰起见: input.hashSets = [ { […]

在mongoose中级联创build/删除集合的好方法

第一个或第二个收集是删除收集的正确方法? 我觉得这是第二个,但第一个更容易使用。 是否可以使用承诺来缓解代码的读取? 第一种方法: beforeEach((done) => { //Before each test we empty the database //Remove Roles Role.remove({}, (err) => {}); //Remove Users User.remove({}, (err) => {}); // Remove Workouts Workout.remove({}, (err) => {}); // Create user Role.create({"name" : "Administrator"},(err, adminRole) => { User.create({ firstname : "***", businessId: "1", lastname : "***", email : "***", roles:[adminRole]}, […]

无法通过Docker中的node.js连接到MongoDB

我的node.js express应用程序无法连接到Docker中的MongoDB。 我不熟悉Docker。 node.js连接: import mongodb from 'mongodb'; … mongodb.MongoClient.connect('mongodb://localhost:27017', … ); Dockerfile: FROM node:argon RUN mkdir /app WORKDIR /app COPY package.json /app RUN npm install COPY . /app EXPOSE 3000 CMD ["npm", "start"] 泊坞窗,compose.yml version: “2” services: web: build: . volumes: — ./:/app ports: — “3000:3000” links: — mongo mongo: image: mongo ports: — […]

Mongoose方法返回undefined

我已经成功地定义和使用我的项目mongoose模型: const Schema = mongoose.Schema; const Item = new Schema({ name : String, hierarchy: [{ type: Schema.ObjectId, ref: this }], hierarchy_size: Number }); 在保存之前和之后,我将相应的hierarchy_size和hierarchy值填充到其属性中,使其成为分层树: Item.pre("save", function(next) { this['hierarchy_size'] = this.hierarchy.length; next(); }) Item.post('save', (doc, next) => { if ((doc._id) && (doc.hierarchy.length == 0)) { doc.hierarchy = [doc._id]; doc.save(); } next(); }) 现在我正在为每个根子节点(在查询hierarchy_size == 1之后)运行以下方法getChildren: Item.methods.getChildren […]

即使没有错误,承诺也会被拒绝。 的NodeJS

所以,我有一段使用Promises的代码,我正在使用bluebird库。 问题是,即使没有错误,我的承诺也会被拒绝。 即使是简单的console.log .then它也会完全跳过.then块 以下是使用诺言的代码: function returnMeetings(query) { return new Promise((reject, resolve) => { Meeting.find(query, (err, foundMeetings) => { if (err) { console.log("We have a error") reject(err); } resolve(foundMeetings); }) }) } 这里是使用returnMeetings函数的代码 returnMeetings(query) .then((data) => { console.log("here we are") // while (count < stopAt) { // let localData = []; // if (req.params.duration === […]

Mongodb返回旧集合

router.post('/orders/finish', function(req, res, next) { var order_id = req.body.order_id; var user_id = req.body.user_id; var table_id = ''; var result = []; mongo.connect(url, function(err, db) { assert.equal(null, err); db.collection('tables').update({id: table_id, status: true}, {$set: {status: false}}, function(err, result) { assert.equal(null, err); }); var cursorTables = db.collection('tables').find({status: false}); cursorTables.forEach(function(doc, err) { assert.equal(null, err); result.push(doc); }, function() { db.close(); […]

在nodejs中添加mongoose对象到数组

我有一个这样的图像arrays。 var newImageParams = [ { image_string: "hello", _type: "NORMAL" }, { image_string: "hello", _type: "NORMAL" } ] 我使用mongo数据库和在nodejs中,我使用mongoose,一切都很好,我可以将数据添加到mongoose表,但添加每个图像后,我试图将结果对象保存到一个数组,在console.log发生,也是正确的,但是当我返回这个数组的时候,它没有任何东西,它是空的 if (newImageParams) { for (var i = newImageParams.length – 1; i >= 0; i–) { // allImages[i] var newImage = new Image(Object.assign(newImageParams[i], {bike: bike._id})); newImage.save(function(err, image){ console.log(image); allImages.push(image); console.log(allImages); }); } } 这就是我正在做的事情,一切都是正确的,在控制台好,但当我最后回来, res.json({bike: bike, images: […]