Как назначить теги продукту с помощью Mongoose и Express? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь присвоить товар нескольким тегам, чтобы можно было найти товары по тегам.но когда я пытаюсь вставить теги в свой продукт, у меня появляется ошибка: «Не удается прочитать свойство« push »из неопределенного» * ​​1001 *

Я использую MongoDB и Mongoose.

Вотмои схемы:


var tagSchema = mongoose.Schema({
    tagname: String
});

var tag = mongoose.model('Tag', tagSchema);


var Item = new Schema({
    title : String,
    description : String,
    price : Number,
    tags:   {
            type: mongoose.Schema.Types.ObjectId,
            ref: "Tag"
        }
});


var gift = mongoose.model('Gift', Item);

Затем я создаю первый продукт:


var product1 = {
    title   :"Phone",
    description : "can also takes pictures",
    price : "345"
};


var product = new gift(product1);
product.save(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log("done"); // it works
  }
});

И, наконец, я пытаюсь добавить тег во вновь созданный продукт:



tag.create({tagname  :"homme" },function(err, newtag){
    var id = "5ca35c741ef6570b55507939";
   gift.findOne({_id : id}, function(err, foundproduct){
      console.log(foundproduct); // It works, I find it.
      foundproduct.tags.push(newtag); // It doesnt works and say  Cannot read property 'push' of undefined
   });
});

Что я вижу, так это то, что foundproduct.tags не существует, когда я console.log foundproduct.Но это то, что я хочу сделать, чтобы протолкнуть newtag в foundproduct ...

Я прочитал несколько тем об этой проблеме, но я все еще не понимаю, как это сделать.

Спасибомного за вашу помощь

1 Ответ

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

попробуйте это:

var Item = new Schema({
  title : String,
  description : String,
  price : Number,
  tags:   [{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Tag"
    }]
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...