Reputation: 1085
How do I fetch all keys named 'username' and 'username' with 'password'(password hash) into two separate arrays? What I've tried so far:
const mongoose = require('mongoose');
const User = require('./models/user.js');
// doesn't work!
const users = User.find().byName('username');
console.log(users);
My user.js:
const mongoose = require('mongoose');
const userSchema = mongoose.Schema({
loginId: String,
firstname: String,
lastname: String,
eMail: String,
password: String,
active: Boolean
});
module.exports = mongoose.model("User", userSchema);
Update: Desired output: Array of users:
['bert', 'joe', 'john']
Array of users with passwords:
[ 'bert', 'bertpassword', 'joe', 'joespassword', 'john', 'johnspassword']
P.S Yes, this is a login system.
Dummy user entry:
{
_id: "5dc16a477bfe45097018a074",
loginId: "1",
firstname: "Test",
lastname: "Testeroni",
eMail: "[email protected]",
password: "test",
active: "true"
}
Upvotes: 1
Views: 543
Reputation: 670
use Lodash flatten at the result
npm i lodash --save
then
const mongoose = require("mongoose");
const _ = require("lodash");
const User = mongoose.model(
"user",
new mongoose.Schema({
loginId: String,
firstname: String,
lastname: String,
eMail: String,
password: String,
active: Boolean
})
);
const db = mongoose.connection;
mongoose.connect("mongodb://localhost:27017/dbName", {
useNewUrlParser: true
});
db.once("open", () => {
User.find({}, { firstname: 1, password: 1 }, function(err, users) {
const flattenUsers = _(users)
.map(({ firstname, password }) => [firstname, password])
.flatten()
.value();
console.log(flattenUsers);
});
});
Upvotes: 2