Node'da Net.createConnection hatalarından kaçınma
Ş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
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:
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
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.