У меня есть 2 документа «Пользовательский документ» и «Пользовательский документ». Это должно быть как отношение «один ко многим».Как заполнить детей в схеме MongoDB с использованием Mongoose
user.model.js
var UserSchema = new Schema({
username: {
type: String,
unique: true,
required: true
},
email: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
},
active: {
type: Boolean,
default: false,
},
tokens: [{
type: Schema.ObjectId,
ref: 'UserToken'
}],
});
module.exports = mongoose.model('User', UserSchema);
usertoken.model.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserTokenSchema = new Schema({
type: {
type: String
},
token: {
type: String
},
expiry: {
type: Date,
default: null
},
user: [{
type: Schema.ObjectId,
ref: 'User'
}]
});
module.exports = mongoose.model('UserToken', UserTokenSchema);
user.controller
var user = new User({
username: input.username,
email: input.email,
password: input.password,
active: false
});
user.save(function(err) {
var userToken = new UserToken({
type: 'new',
token: token,
expiry: null,
user: user._id
userToken.save(function(err) {
})
})
Втч en i отображает пользователя, он должен заполнять/извлекать все токены, связанные с этим пользователем. На данный момент он этого не делает.
Запрос
User.find({})
.populate('tokens')
.exec(function(err, users) {
if(err) return res.json({success: 'false', errors: err});
return res.json(users);
});
данных
[
{
username: "TestUser",
email: "[email protected]",
password: "$2a$10$I4wJ.e3eVK7EMcfdf46x0e5kYnSTzHPTcBmzXIctduM./pZEiGbPG",
_id: "56ab4bbfa8f3e11813803566",
__v: 0,
tokens: [ ],
active: false
}
]
Это, однако получение связанного пользователя, когда я отобразить маркер.
Запрос
UserToken.find({})
.populate('user')
.exec(function(err, tokens) {
if(err) return res.json({success: 'false', errors: err});
return res.json(tokens);
});
данных
[
{
type: "new",
token: "16c72da8-78a7-4ee1-9b03-f5e490d7e010",
_id: "56ab4bbfa8f3e11813803567",
__v: 0,
user: [
{
username: "TestUser",
email: "[email protected]",
password: "$2a$10$I4wJ.e3eVK7EMcfdf46x0e5kYnSTzHPTcBmzXIctduM./pZEiGbPG",
_id: "56ab4bbfa8f3e11813803566",
__v: 0,
tokens: [ ],
active: false
}
],
expiry: null
}
]
Как я могу получить пользователю все связанные с ним маркеры?
Ive обновил мой оригинальный вопрос, чтобы показать U как им создать пользователь и токен пользователя в моем пользовательском контроллере. Не могли бы вы показать мне правильный способ сделать отношения 1-N в схеме. –
Я понимаю, что вы сейчас имеете в виду, я должен сначала создать маркер, а затем установить идентификатор маркера внутри массива user.tokens. –
Но что, если что-то пойдет не так во время создания пользователя, как если бы посылка электронной почты не удалась. Если его линейный i cn't вернется к тому, когда пользователь не был создан без ручного удаления всего, что я создал. –