Node'da Net.createConnection hatalarından kaçınma

Sep 23 2020

Şu anda React ve Node.js ile bir uygulama oluşturuyorum

Bu uygulamada, "database.js" adlı ayrı bir dosyada bulunan aşağıdaki işlevi kullanarak kendi sunucumdaki bir veritabanını sorgulamam gerekiyor

const fetchQuery = util.promisify(con.query).bind(con)

// Get all the tracks for a given date from the 
const fetchTracks = async (date) => {
  const rows = await fetchQuery("SELECT * FROM tracks WHERE playlistDate = '"+date+"'");
}

Bu, dosyayı komut satırından Node ile çalıştırdığımda mükemmel çalışıyor. Ancak, onu react uygulamama aktarmaya çalıştığımda

import { fetchTracks, addTracks } from '../scripts/database'

Veritabanı dosyasında, özellikle Unhandled Rejection (TypeError): Net.createConnection is not a functionfetchQuery çağrımda hatalar almaya başladım.

Okuduklarıma göre, bu bir güvenlik riski oluşturacağı için tarayıcıdan işlevi çağırmaya çalışırken oluyor. Ancak anladığım kadarıyla tüm düğüm işlemleri sunucu tarafında yapılıyor değil mi? Veritabanı sözde sayfa sunulmadan önce sorgulanırken neden bu bayrağı alayım? Bunu düzeltmek için ne yapmam gerekiyor?

Yanıtlar

3 RonNewcomb Sep 29 2020 at 02:49

React tarayıcıda çalışır, bu nedenle database.jsReact uygulamanıza dahil ettiğiniz anda, tarayıcıda React'in geri kalanıyla birlikte çalışır, böylece elbette hatayı alırsınız. Bu işi yapmak iki seçenek sunar:

  1. Node for React'ten bir API uç noktasının çağrılmasını sağlar ve bu API uç noktası database.js'yi çağırır veya

  2. React uygulamanızın bazılarının - özellikle de ana menünüz gibi daha statik kısımlarının - Düğüm tarafında oluşturulduğu ve tarayıcıya yalnızca son HTML'nin gönderildiği React için sunucu tarafı oluşturmayı araştırın. (Bu başlı başına büyük bir konudur.)

SQL için bir tarih parametresi alan örneğinize göre, 2 numaralı seçeneğin bir seçenek olmadığını tahmin ediyorum.