저는 여전히 SQL 모드에서 벗어나려고 노력하고 있습니다. 이는 구현상의 문제가 아니라 건축적인 문제 일 수 있습니다. 내가 성취하려고하는 기능을 성취하기 위해몽구스 모델은 배열없이 절약합니다.
사용자를위한 스키마가 있습니다. 번거롭지 않게 mongoose를 사용하여 사용자를 mongoDB에 저장합니다.
그러나 우리는 스키마 모델을 입력 할 수있는 새로운 속성이 있습니다.이를 성과라고하며 다른 스키마에서 얻은 업적의 배열입니다. 다음과 같이이 사용자의 스키마에 선언 :
UserSchema.save에var UserSchema = new Schema({
_id : { type: String, unique: true },
group_id : { type: String, required: true },
username : { type: String, required: true },
achievements : { type: Array }
});
, 나는 같은 group_id
일치 성과의 배열을 얻을 수있는 성과 모델을 찾고, 다음과 같이
exports.create = function(req, res, next) {
var newUser = new User(req.body);
// Populate the achievements (same group_id)
Achievement.find()
.where({ group_id: newUser.group_id })
.select({ _id: 1 })
.exec()
.then(function(achievementsForGroupArray) {
_.forEach(achievementsForGroupArray, function(achievementForGroup) {
newUser.achievements.push(achievementForGroup);
});
})
.catch(function(err) {
return res.status(400).send(err).end();
})
newUser.save(function(err, user) {
// .. generic validation stuff ..
}
이제 위의 경우 forEach()
을 반환 배열의 직선 푸시로 바꾸더라도 작동하지 않으며 단순히 푸시를 'test'
을 눌러 채우기 만해도 여전히 채워지지 않습니다.
내가 console.log newUser
저장하기 전에, 그들은 거기에 있습니다. 내가 console.log에 user
부분에 newUser.save(function(err, user)
의 업적이 없다.
내 스키마 설정이 잘못되어 있으므로 Mongoose/MongoDB가 올바른 유형이 아니기 때문에 Mogoose/MongoDB가 삭제됩니다.
EDIT : 콘솔에 로그 할 때 결과가 나타나며 foreach 내부에서 볼 수 있습니다.
여기에 "achievementsForGroupArray"개체를 배치 할 수 있습니까? –