Articles of mongoose

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的新手,请告诉我是否需要提供更多信息。

如何在for循环中使用mongoose函数?

有没有一种方法,我可以在这个例子forEach循环内使用mongoose函数? 利用柜台到达可达线 idsArray.forEach((itemId,i) =>{ Place.findById(itemId,(err,item)=>{ if(err){ console.log("error") } idsArray[i] = {item.id}; // unreachable }) }) 我读了关于asynchronous,但我不知道通过它实现它的方式

返回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: [] […]

由于MissingSchemaError,Mongoose .populate()不能填充

我正在尝试使用Mongoose中的对象ID引用来填充users数组。 这是我的user.js模型: var mongoose = require('mongoose'); var User = mongoose.Schema({ conversations: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Conversations' } ], messages: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Messages' } ] }); var User = module.exports = mongoose.model('Users', User); module.exports.getUserByUsername = function(username, callback) { var query = {username: username}; User.findOne(query, callback); } module.exports.getUserById = function(id, callback) { User.findById(id, […]

无法编辑mongoose文件

我正在使用mongoose库mongodb。 我试图保存上面的login时间与下面的代码,如这里所build议的。 UserModel.findOne({ email: req.body.email }, function (err, doc) { //console.log('doc', doc); doc.lastLoginTime = new Date(); doc.save(); }); 我无法编辑它保持不变的文档。 我在这里错过了什么? 我的模式是 const UserSchema = new mongoose.Schema({ email: { type: mongoose.SchemaTypes.String, required: true, //unique: true, set: toLower }, created_at: { type: Date, default: Date.now }, updated_at: { type: Date, default: Date.now } }, { strict: false […]

在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]}, […]

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 […]

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: […]

mongoose在数组中填充

我尝试玩填充,但没有成功…有可能做到这一点? 我有2个shema: – 用户 import mongoose, { Schema } from 'mongoose' const userSchema = new Schema({ email: { type: String, unique: true }, password: String, passwordResetToken: String, passwordResetExpires: Date, products: [{ productId: { type: Schema.Types.ObjectId, ref: 'Product' }, dateAdd: { type: Date, default: Date.now } }] }, { timestamps: true }) const User = mongoose.model('User', […]