РЕШЕНА МОЯ ПРОБЛЕМА:
Несмотря на то, что я вносил изменения в свой код backend node.js и перезагружал файл на сервер, сервер не принимал эти изменения.Завершите работу сервера и перезапустите его, используя nodemon, и теперь все сохраняется правильно.
В настоящее время работаем над приложением для iPhone с использованием Swift, Node.js и базы данных PostgreSQL.
В настоящий момент все значения, кроме 4, которые я пытаюсь передать в базу данных, проходят правильно.Я считаю, что я все правильно определил.Ниже я опубликую некоторые фрагменты кода из моего Swift и Node.js, а также снимок экрана с сохранением значений в базе данных.Я буду отображать свои проблемы по мере продвижения.
Заранее благодарю за помощь!
Код Swift для словаря
let routeInfo =
["userID": userID,
"arrivalTime1" : arrivaltime1.text! as Any,
"arrivalTime2" : arrivaltime2.text! as Any,
"departureTime1" : "00:00",
"departureTime2" : "00:00",
"startPointLat": self.lat1,
"startPointLong": self.lon1,
"endPointLat": self.lat2,
"endPointLong": self.lon2,
"Driver": driver,
"Name": self.routeName.text! as Any,
"startAddress": startadd as Any,
"endAddress": endadd as Any,
"rideDate" : calendarInput.text! as Any,
"extraTime" : "1",
"isOneTime" : true,
"rideDay" : calendarInput.text! as Any] as [String : Any]
Как этостоит, последние четыре значения, перечисленные здесь, не сохраняются: "rideDate", "extraTime", "isOneTime", "rideDay"
Где определяется calendarInput.text:
@objc func dateChanged(datePicker: UIDatePicker) {
let calendarFormatter = DateFormatter()
calendarFormatter.dateFormat = "yyyy-MM-dd"
calendarInput.text = calendarFormatter.string(from: datePicker.date)
}
В базе данных rideDate определяется как текстовый тип данных, extraTime - это текстовый тип данных, isOneTime - логическое значение, а rideDay - тип даты.
Следующий фрагмент кода находится в Swift и там, где routeInfo передается методу JSONSerialization.
JSONSerialization
let routeURL = URL(string: "http://myServerString:3000/routes/")!
var request = URLRequest(url: routeURL)
let routeJSON = try! JSONSerialization.data(withJSONObject: routeInfo, options: .prettyPrinted)
let routeJSONInfo = NSString(data: routeJSON, encoding: String.Encoding.utf8.rawValue)! as String
request.httpBody = "routeInfo=\(routeJSONInfo)".data(using: String.Encoding.utf8)
request.httpMethod = "POST" // POST method.
Вот соответствующий оператор вставки базы данных:
База данных
db.any(`INSERT INTO database.\"Routes\"
(\"riderID\",
\"departureTime1\", \"departureTime2\",
\"arrivalTime1\", \"arrivalTime2\",
\"startPointLong\", \"startPointLat\",
\"endPointLong\", \"endPointLat\",
\"Name\", \"Days\",
\"Matched\", \"Driver\",
\"startAddress\", \"endAddress\",
\"rideDate\", \"extraTime\",
\"isOneTime\", \"rideDay\")
values(
'${userID}',
${routeJSON['arrivalTime1']}, ${routeJSON['arrivalTime2']},
${routeJSON['departureTime1']}, ${routeJSON['departureTime2']},
${routeJSON['startPointLong']}, ${routeJSON['startPointLat']},
${routeJSON['endPointLong']}, ${routeJSON['endPointLat']},
${routeJSON['Name']}, 0, false, false,
${routeJSON['startAddress']}, ${routeJSON['endAddress']},
${routeJSON[rideDate]}, ${routeJSON['Days']},
${routeJSON['extraTime']}, ${routeJSON['isOneTime']},
${routeJSON['rideDay']}))`
После выполнения этого запроса вставки в серверной части я получаю сообщение об успешном завершении в консоли сервера о том, что маршрут добавлен.
GET /routes/saved?userID=10 304 31.664 ms - -
{ extraTime: '1',
endPointLat: 38.8976719,
startAddress:
'Lincoln Memorial, 2 Lincoln Memorial Cir NW, Washington, DC 20037, United States',
arrivalTime2: '3:58 PM',
Name: 'SO',
arrivalTime1: '3:57 PM',
endAddress: 'The White House, 1600 Pennsylvania Ave NW, Washington, DC 20500-0003, United States',
isOneTime: true,
departureTime2: '00:00',
rideDate: '2018-11-30',
Driver: false,
departureTime1: '00:00',
startPointLat: 38.8892673,
startPointLong: -77.0501086,
rideDay: '2018-11-30',
userID: '10',
endPointLong: -77.036603 }
Successfully added route.
POST /routes/ 200 63.285 ms - 52
После того, как все эти шаги были выполнены .. Все данные но rideDate, rideDay, isOneTime и extraTime сохраняются.Они просто отображаются как NULL или пустые значения в таблице.
Все значения определены там, где это необходимо, так что я думаю.
Несколько мыслей?:
- После создания таблицы были добавлены столбцы базы данных, может ли это вообще вызывать проблемы?
- I 'неправильно отправляю значение в вызов вставки
- Где-то отсутствует соединение
Я понимаю, что это довольно долго, и я ценю любую помощь, которая предоставляется.Если есть какие-либо вопросы или есть какой-либо другой необходимый код для просмотра, пожалуйста, дайте мне знать.
Спасибо!