Сервер разработки node.js на localhost возвращает ноль в приложении swiftUI, но не в браузере - PullRequest
0 голосов
/ 11 июля 2020

У меня проблема с приложением swiftUI, подключающимся к моему локальному node.js rest api.

У меня файл node.js работает на localhost, я даже заставил его запускать на https, но каждый раз вызовите URL-адрес получения, я получаю возвращаемое значение ноль. Также я просто тестирую это на локальном симуляторе.

Вот мое приложение. js файл

const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const morgan = require('morgan')
const mysql = require('mysql')

https.createServer({
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.cert')
}, app).listen(3000, () => {
  console.log('Listening...')
})

app.use(morgan('combined'))

app.get("/", (req, res) => {
  console.log("responding to root route")
  res.send("Hello from roooooot")
})

app.get('/users/:username',(req,res) => {
  console.log("Fetching user: " + req.params.username)
  const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'kneckt'
  })

  const username = req.params.username
  const queryString = "SELECT * FROM kneckt.user WHERE username = ?"

  connection.query(queryString,[username],(err, rows, fields) =>{
    if(err){
      console.log(err)
      res.sendStatus(500)
      return
    }

    console.log("I think we fetched users successfully")

    const users = rows.map((row) => {
      return{username: row.username,email: row.email}
    })
    res.json(users)
  })
  //res.end()
})

app.get("/users", (req, res) => {
  const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'kneckt'
  })

  const queryString = "SELECT * FROM kneckt.user"

  connection.query(queryString,(err, rows, fields) =>{
    if(err){
      console.log(err)
      res.sendStatus(500)
      return
    }

    console.log("I think we fetched users successfully")

    const users = rows.map((row) => {
      return{username: row.username,email: row.email,id: row.userID, firstName: row.first_name,lastName:row.last_name,school: row.school,image:row.image,status: row.status}
    })
    res.json(users)
  })

})

и вот мой быстрый файл с командой git:

class API {
    
    var didChange = PassthroughSubject<API, Never>()
    
    var friends = [Friend]() {
        didSet {
            didChange.send(self)
        }
    }
    
    func getFriends(completion: @escaping ([Friend]) -> ()){
        guard let url = URL(string: "https://localhost:3000/users") else { return }
        let request = URLRequest(url: url)
        URLSession.shared.dataTask(with: request) { data, response, error in
            
            guard let data = data else {
                print("Hello for some reason nothing is being delivered")
                return}
            let friends = try! JSONDecoder().decode([Friend].self, from: data)
            
            DispatchQueue.main.async {
                self.friends = friends
            }
        }
    .resume()
    }
}

Я всегда получаю сообщение об ошибке «привет, по какой-то причине ничего не доставляется».

Любое понимание было бы замечательно.

Также я могу получить доступ к API на браузер на симуляторе ios, и он возвращает правильный json. Так что я чувствую, что это как-то связано с самим приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...