es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No es posible insertar una cadena en un arreglo.

Estoy tratando de aprender EJS y hacer un blog, pero no logro entender este error.

Lo que estoy tratando de hacer es escribir algunas respuestas bd como un objeto en un arreglo y luego agregarlo al archivo. Estoy usando replit DB.

const fs = require("fs")
const Database = require("@replit/database")
const db = new Database()
exports.load = async function(){
  db.set("hello", {
    "author": "Some author 1",
    "title": "Blog Post 1",
    "content": "First post content",
    "date_posted": "Dec 17, 2021"
  })
var posts = new Array()
db.list().then(keys => {
    keys.forEach(key => {
      posts.push(`<article class="media content-section">
        <div class="media-body">
          <div class="article-metadata">
            <a class="mr-2" href="/p">Anonymous</a>
            <small class="text-muted">${db.get(key).date_posted}</small>
          </div>
          <h2><a class="article-title" href="#">${ db.get(key).title }</a></h2>
          <p class="article-content">${ db.get(key).content }</p>
        </div>
      </article>`)
    })
  });
posts = posts.join()
fs.writeFileSync("public/posts.ejs", posts)
}

Error que obtengo cuando ejecuto el código:

UnhandledPromiseRejectionWarning: TypeError: posts.push no es una función

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error “TypeError: posts.push no es una función” sugiere que la variable “posts” no es un arreglo.

    Asegúrate de haber declarado e inicializado correctamente la variable “posts” como un arreglo antes de llamar al método “push”. Por ejemplo:

    var posts = []; // inicializa un arreglo vacío
    
    db.list().then(keys => {
      keys.forEach(key => {
        // añade la respuesta actual de la base de datos al arreglo
        posts.push(`<article class="media content-section">...</article>`);
      })
    })
    
    // une los elementos del arreglo en una sola cadena de texto
    posts = posts.join();
    

    Además, asegúrate de utilizar la sintaxis correcta para las funciones flecha en tu código (no deben tener un signo de igual y un signo mayor, sino utilizar =>).

Comments are closed.