У меня есть две схемы DB mongoose: User
и Profile
:
var userSchema = new mongoose.Schema({
username: String,
password: String,
type: String
});
userSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", userSchema);
var profileSchema = new mongoose.Schema({
username: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
email: {
type: String,
default: ""
},
skill: {
type: String,
default: ""
}
});
module.exports = mongoose.model("Profile", profileSchema);
Сначала я регистрирую и аутентифицирую пользователя, используя passport-js, и, если это успешно, я хочу создать Profile
db с username
и type
.Затем я разрешу пользователям обновлять этот Profile
дБ (но не Users
).После документов я пытаюсь использовать .populate
, чтобы создать запись в Profile
с той же информацией, что и в User
:
router.post("/signup", function(req, res) {
var newUser = new User({username: req.body.username, type: req.body.type});
User.register(newUser, req.body.password, function(err, user){
if(err){
console.log(err.message);
return res.render("signup");
}
passport.authenticate("local")(req, res, function(){
Profile.findById(newUser._id).populate("username").exec(function(err, foundUser){
if(err){
console.log("Problem populating the profiles DB");
}
else{
console.log("New user:" + newUser._id);
res.redirect("profile/" + newUser._id);
}
});
});
});
});
Это проходит без ошибок,но мой Profiles
дБ пуст.
Кто-нибудь может увидеть, что я здесь делаю не так?
Я также пытался (по тому же маршруту):
Profile.create(newUser, function(err, newlyCreated){
if(err){
console.log(err);
} else {
console.log("Added user to profile db:" + newUser._id);
console.log("New user:" + newUser._id);
res.redirect("profile/" + newUser._id);
}
});
Но это не с ошибкой:
{ DocumentNotFoundError: No document found for query "{ _id: 5c6d9512a4a301b73b565681 }"
Еще один подход, который я пробую, заключается в следующем:
Profile.create({username:req.body.username, type: req.body.type}, function(err, pro){
if(err){
console.log("Profile error: " + err);
} else {
console.log("Added user to profile db:" + newUser._id);
console.log("New user:" + newUser._id);
res.redirect("profile/" + newUser._id);
}
});
, который проходит, но создает запись в Profiles
с _id
отличается от соответствующей записи в Users
.
Кто-нибудь сможет указать мне правильное направление?