Как извлечь данные из вложенного объекта с помощью мопса - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь получить доступ к данным из вложенного объекта JSON без javascript в PUG и product.highlights [0] .heading, индекс должен быть зациклен.

ФОРМАТ JSON

[{"id":"0.33454785604755677","title":"Product 2 Title",
"highlights":[
- {"heading":"Product 2 Heading 1","description":"Product 2 Description 1"},
 - {"heading":"","description":""},
 - {"heading":"","description":""},
 - {"heading":"","description":""}]
}]

Я пытался

-var x = [0,1,2,3,4,5] 
-var high =[product.highlights[0].heading,product.highlights[1].heading,product.highlights[2].heading,product.highlights[3].heading] 
each val in x 
 -var p = high[x] // here its not considering 'x' 
  h3 #{p}

и непосредственно с использованием цикла

each i in [0,1,2,3,4,5]
 h3 #{product.highlights[i].heading} //but here its not considering 'i'

Он работает внутри 'name', 'for'.

но мне нужно, чтобы он работал внутри:

- value=(editing ? product.highlights[0].heading:'')


each i in [1, 2, 3, 4, 5, 6]
  .form-control
  label(for="highlights[" + i +"][heading]") Highlights Number #{i} Heading
  input(type="text",name="highlights[" + i +"][heading]",value=(editing ? product.highlights[0].heading:''))

Я не знаю, как получить к нему доступ через javascript в pug

Может кто-нибудь сказать мне, как я могу это сделать?

1 Ответ

0 голосов
/ 19 апреля 2019
-function productHeading(product,y){return product.highlights[y].heading;}

 each i in [0, 1, 2, 3, 4, 5]
   .form-control
       label(for="highlights[" + i +"][heading]") Highlights Number #{i+1} Heading
          input(type="text",name="highlights[" + i +"][heading]",value=(editing ? productHeading(product,i):''))


product хранит объект, найденный методом findById, который затем отправляется в файл pug

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

const SubProductSchema = new Schema({

    product_id: Schema.Types.ObjectId,
    title: String,
    name:{
        type: String,
        unique: true,
        required: true
    },
    price:Number,
    image:String,
    alt: String,
    quantity:Number,
    description:String,
    bgImage:String,
    primaryImage:String,
    primaryAlt: String,
    primaryHeading:String,
    primaryDescription:String,
    highlights:[{
        heading:String,
        description:String,
        icon:String
    }],
    specs:[{
        heading:String,
        description:String,
        image:String
    }],


    featured:Boolean,
    preOrder:Boolean,
    video:Boolean
});

module.exports = mongoose.model('xxx',xxx);

Файл контроллера

const Product = require('../models/product');
.
.
Product.findById(prodId)
        .then( product => { ....

И так далее.
Редактирование - это булева переменная, если она имеет значение true, вызывается функция productHeading в файле pug и значение инициализируется, иначе устанавливается значение '' (пусто)

...