Как показать данные в шаблоне hbs? - PullRequest
0 голосов
/ 29 октября 2018

Нужна помощь с этим, я пытаюсь показать данные в шаблоне, но это не работает. Я использую NestJS с mysql.

Вот код контроллера .ts:

import { Controller, Get, Post, Put, Delete, Body, Param, Render, UsePipes, Logger, UseGuards} from '@nestjs/common';
import { ProductoService } from './producto.service';
import { ProductoDTO } from './producto.dto';
import { ValidationPipe } from '../shared/validation.pipe';


@Controller('producto')
export class ProductoController {
    private logger = new Logger('ProductoController');

    constructor(private productoService: ProductoService){}

    @Get('index')
    //@UseGuards(new AuthGuard())
    @Render('Producto/index')
    showAllUsers(){
        return {product:this.productoService.showAll().then(function(result){
            var aux = [{}];
            aux = result;
            console.log(aux);
            return aux;

        })};        
    }
}

Вот код шаблона руля index.hbs:

<h2>Lista de Productos</h2>
<div class="entry">
    <table class="table">
        <tr>
            <th>Nombre</th>
            <th>Cantidad</th>
            <th>Descripcion</th>
            <th></th>
        </tr>
        <tr>           
            {{#each aux}}
                <td>{{this.name}}</td>
                <td>{{this.quantity}}</td>
                <td>{{this.description}}</td>
            {{/each}} 
        </tr>
    </table>
    <br/>
</div>

даже в журнале консоли покажи мне данные.

image data log

1 Ответ

0 голосов
/ 29 октября 2018

Я не думаю, что nestjs будет автоматически ждать разрешения вложенных обещаний. Так он вернется {product: Promise}.

Я бы посоветовал сделать ваш метод async:

@Get('index')
async showAllUsers(){
    const products = await this.productoService.showAll();
    return {products};        
}

Кроме того, в вашем шаблоне hbs вы ссылаетесь на aux, но вы возвращаете {product: [...]}. Так что вместо этого должно быть {{#each product}}. (Я переименовал его в products в примере выше, потому что это массив.)

...