在mongoose中迭代集合的最简单方法

时间:2017-08-13 01:18:33

标签: node.js mongodb mongoose

我希望能够遍历集合,以便能够遍历所有对象。这是我的架构:

'use strict';

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const bcrypt = require('bcrypt');
const moment = require('moment');

//Create user schema 
const UserSchema = new Schema ({
    username: { type: String, unique:true },
    password: {type:String},
    phonenumber: Number,
});

//**************PASSWORD STUFF *******************************
//Hash the password so it becomes encrypted.
UserSchema.methods.generateHash = function(password){
    return bcrypt.hashSync(password,bcrypt.genSaltSync(9));
}

UserSchema.methods.validPassword = function(password){
    return bcrypt.compareSync(password,this.password);
}
//************************************************************

//Schema model.
const User = mongoose.model('user-dodger', UserSchema);

module.exports = User;

2 个答案:

答案 0 :(得分:5)

假设您正在尝试查询数据库中的所有用户,您只需使用js map函数为您完成工作

这是我所说的

的一个例子
const queryAllUsers = () => {
    //Where User is you mongoose user model
    User.find({} , (err, users) => {
        if(err) //do something...

        users.map(user => {
            //Do somethign with the user
        })
    })
}

答案 1 :(得分:0)

猫鼬现在有 async iterators。它们的优点是不需要在开始迭代之前加载集合中的所有文档:

for await (const doc of Model.find()) {
  doc.name = "..."
  await doc.save();
}

这里有一个 great blog post 包含更多详细信息。