У меня проблемы с заполнением данных.Я могу отлично начинать главы, и у главы много пользователей.У меня есть отдельный файл userSeed:
const faker = require("faker");
const bcrypt = require("bcryptjs");
const uuidv1 = require("uuid/v1");
// Bring in User model
const User = require("../models/User");
const Chapter = require("../models/Chapter");
// Bring in Mongoose and connect to DB
const mongoose = require("mongoose");
mongoose.Promise = require("bluebird");
const env = require("../config/keys");
mongoose.connect(
env.db,
{
useNewUrlParser: true
}
);
// Drop the collection to avoid duplicates
User.collection.drop();
// ========= INIT =========
function init() {
Chapter.find()
.then(chapters => {
console.log(`${chapters.length} chapters `);
chapters.forEach(chapter => {
for (var i = 0; i < 10; i++) {
const rand = Math.floor(Math.random() * 3000);
let email = "";
let password = "password";
let admin = false;
let lead = false;
if (i === 0) {
email = `admin${rand}@test.com`;
admin = true;
} else if (i === 1 || i === 2) {
email = `lead${rand}@test.com`;
lead = true;
} else {
email = `test${rand}@test.com`;
admin = false;
}
const user = new User({
username: faker.lorem.word(),
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
organisation: faker.company.companyName(),
chapter: chapter._id,
email: email,
password: password,
admin: admin,
lead: lead
});
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(user.password, salt, (err, hash) => {
if (err) throw err;
user.password = hash;
console.log(user); // Successfully generates a user with hashed password
// User.create(user, (err, user) => {
// // ATTEMPT 1 : no success.
// if (err) {
// console.log(err);
// } else {
// console.log(user);
// }
// });
user.save((err, user) => {
// ATTEMPT 2 : no success.
if (err) {
console.log(err);
} else {
console.log(user);
}
});
});
});
}
});
})
.catch(err => console.log(err))
.finally(() => mongoose.connection.close());
}
init();
Если вы посмотрите на мой код, вы увидите, что я пробовал несколько разных способов сохранить пользователей, но ни один из них не работал.console.log(user)
под user.password = hash
работает отлично (возвращает подлинный chapter._id и хешированный пароль), но просто не сохранит.Я (ясно) новичок в NoSQL и Mongoose, пришедший из баз данных отношений.Ниже моя userModel
const UserSchema = new Schema({
...
chapter: {
type: Schema.Types.ObjectId,
ref: "chapters"
},
...
});
На дополнительном примечании, есть ли у кого-нибудь хороший ресурс для изучения асинхронного JavaScript?Есть много, но некоторые твердые рекомендации были бы потрясающими.Спасибо!