Как добавить req.body в массив mon goose? - PullRequest
0 голосов
/ 26 марта 2020

Я чувствую, что перепробовал практически все.

Я хочу добавить изображения из моего файла .e js в массив галереи. Req.body работает, я просто не могу добавить эти изображения в массив галереи.

router.post("/", function(req, res){
    var name            = req.body.name;
    var mainImage       = req.body.mainImage;
    var image           = {'image': req.body.image};  <----------
    var gallery         = galArray(image);   <----------
    var description     = req.body.description;
    var price           = req.body.price;
    var newBike         = {name: name, mainImage: mainImage, gallery: gallery, description: description, price: price}
    Bike.create(newBike, function(err, newlyCreated){
        if(err){
            console.log(err);
        } else {
            console.log(newlyCreated);
            res.redirect("/shop/bikes");
        }
    });
});

const galArray = img => {
    var gal = [];                  <-----------------------
    return gal.push(img);
}
const bikeSchema = new mongoose.Schema({
        // IDENTITY
        name: String,
        mainImage: String,
        gallery: [{

                image: String. <----------
        }    
        ],
        description: String,

Я пытался:

var image   = req.body.image;
var gallery = gallery.push(image);
var image   = {'image': req.body.image};
var gallery = gallery.push(image);

РЕДАКТИРОВАТЬ: вот сообщение об ошибке, которое я получаю после изменения моей функции на:

const galArray = img => {
    var gal = [];              
    gal.push(img);
    return gal;
}

вот сообщение об ошибке:

 stringValue: '"[\n' +
        "  '/public/img/Bikes/Road/superstar bottom bracket.jpeg',\n" +
        "  '/public/img/Bikes/Road/superstar bottom bracket.jpeg',\n" +
        "  '/public/img/Bikes/Road/superstar bottom bracket.jpeg',\n" +
        "  '/public/img/Bikes/Road/superstar bottom bracket.jpeg',\n" +
        "  '',\n" +
        "  '',\n" +
        "  '',\n" +
        "  ''\n" +
        ']"',
      kind: 'String',
      value: [Array],
      path: 'image',
      reason: [MongooseError],
      message: 'Cast to String failed for value "[\n' +
        "  '/public/img/Bikes/Road/superstar bottom bracket.jpeg',\n" +
        "  '/public/img/Bikes/Road/superstar bottom bracket.jpeg',\n" +
        "  '/public/img/Bikes/Road/superstar bottom bracket.jpeg',\n" +
        "  '/public/img/Bikes/Road/superstar bottom bracket.jpeg',\n" +
        "  '',\n" +
        "  '',\n" +
        "  '',\n" +
        "  ''\n" +
        ']" at path "image"',
      name: 'CastError'
    }
  },
  _message: 'Bike validation failed',
  name: 'ValidationError'
}

1 Ответ

0 голосов
/ 27 марта 2020

Array#push возвращает новую длину массива после добавления в него элемента sh.

const galArray = img => {
    var gal = [];
    gal.push(img); // You should push the element into the array
    return gal; // And then return the array
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...