Отношения MongoDb не связаны с другими - PullRequest
0 голосов
/ 14 апреля 2019

Я пишу кулинарную книгу в node.js.Я новичок в этом языке и концепции mongoDB.Я понимаю, что мне нужен пользователь, у которого есть любимые рецепты и любимые рецепты. Я собираюсь хранить рецепты

Моя модель выглядит так, и здесь что-то не так

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

userSchema = new Schema({
  name: String,
  userId: {type: String, required: true},
  favorites: [{
    type: Schema.Types.ObjectId,
    ref: 'Favorites',
  }],
});

favoritesSchema = new Schema({
  name: String,
  id: {type: Schema.Types.ObjectId},
  recipes: [{
    type: Schema.Types.ObjectId,
    ref: 'Recipes',
  }],
  startOfRecipe: {type: Date},

});

recipeSchema = new Schema({
  name: {type: String, unique: true},
});


const User = mongoose.model('User', userSchema);
const Favorites = mongoose.model('Favorites', favoritesSchema);
const Recipes = mongoose.model('Recipes', recipeSchema);
module.exports = {User, Favorites, Recipes};

Я написалфункция, которая ищет пользователя, а затем сохраняет любимый рецепт

  addFav(fav, userId) {
    return new Promise(function(resolve, reject) {
      schema.User.findOne({userId: userId}, function(err, user) {
        if (err || !user) {

        } else {
          schema.Favorites.create({
            name: fav,
          }, (err, result) => {
            if (err) throw err;
            console.log(result);
            resolve('noResult');
          });

          resolve(user);
        }
      });
    });
  }

и сохраняет, но если я вызываю моего пользователя, список избранного всегда пуст

{ favorites: [],
  _id: 5cb32867d2dfea0cadd79ecb,
  name: 'Anna',
  userId:
   'AF322',
  __v: 0 }

Что я делаю неправильно?Может ли кто-нибудь помочь мне, пожалуйста:)

1 Ответ

0 голосов
/ 14 апреля 2019

Пожалуйста, проверьте ниже код. Я создал подсхему favorites & recipes, получаю данные пользователя с помощью userId и помещаю favorites объект в favorites поле

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

userSchema = new Schema({
  name: String,
  userId: {type: String, required: true},
  favorites: [favoritesSchema],
});

favoritesSchema = new Schema({
  name: String,
  id: {type: Schema.Types.ObjectId},
  recipes: [recipeSchema],
  startOfRecipe: {type: Date},

});

recipeSchema = new Schema({
  name: {type: String, unique: true},
});


const User = mongoose.model('User', userSchema);

addFav(fav, userId) {
    return Schema.User.update({_id:userId}, {$set:{$push:{favorites:fav}}})
}
...