Привет.
Проблема была в том, что posts.value в момент вызова forEach ещё не был инициализирован, так как данные загружаются асинхронно через fetch. Вначале posts.value — это undefined, и из-за этого попытка вызвать forEach на нём вызывала ошибку.
Попробуй такой вариант:
import { ref, watchEffect } from 'vue'
const posts = ref([])
const database = ref([])
watchEffect(async () => {
const response = await fetch('http://localhost:3000/posts')
posts.value = await response.json()
if (posts.value.length) {
posts.value.forEach((item) => {
database.value.push({ id: item.id, name: item.name })
})
}
})
</script>
<template>
<div v-for="item in posts" :key="item.id">
{{ item.name }}
</div>
</template>
Теперь posts и database изначально инициализированы как пустые массивы, и forEach вызывается только после того, как данные загружены. Ошибка не должна появиться.