У меня есть база данных для тестирования на Wix.
Я могу загрузить данные JSON и просмотреть их в базе данных LIVE, хотя и грубо.
Проблема в том, что он продолжает вставлять новые строки / столбцы. Как я могу заставить его взаимодействовать с существующими полями?
Вот код файла Backend:
export function post_myFunction(request) {
let options = {
"headers": {
"Content-Type": "application/json"
}
};
// get the request body
return request.body.text()
.then( (body) => {
// insert the item in a collection
return wixData.insert("zpage_test", JSON.parse(body));
} )
.then( (results) => {
options.body = {
"inserted": results
};
return created(options);
} )
// something went wrong
.catch( (error) => {
options.body = {
"error": error
};
return serverError(options);
} );
}
Вот код VBA PUT (с включенной средой выполнения сценариев Microsoft в ссылках VBA)
Sub SendJson()
Dim objHTTP As Object
Dim Json As String
Dim result As String
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Url = "https://www.mywebsite.com/_functions/myFunction"
Json = "{""ID"":""d0f6f64a-e6d8-4cac-9285-d3e51bf3cb53"",""Title"":""tTitle1"",""t1"": ""1.5"", ""t2"": ""hello""}"
objHTTP.Open "PUT", Url, False
objHTTP.setRequestHeader "Content-type", "application/json"
objHTTP.Send (Json)
result = objHTTP.responseText
'Some simple debugging
Range("A15").Value = result
Range("D15").Value = Json
Set objHTTP = Nothing
End Sub
--- ОБНОВЛЕНИЕ ЗАПРОСА! ---
--- WIX BACKEND ---
import {created, serverError, ok, notFound} from 'wix-http-functions';
import wixData from 'wix-data';
export function put_myFunction(request) {
let options = {
"headers": {
"Content-Type": "application/json"
}
};
// get the request body
return request.body.text()
.then( (body) => {
// update the item in a collection
return wixData.update("zTest_DevDaily", JSON.parse(body));
} )
.then( (results) => {
options.body = {
"inserted": results
};
return ok(options);
} )
// something went wrong
.catch( (error) => {
options.body = {
"error": error
};
return serverError(options);
} );
}
export function post_myFunction(request) {
let options = {
"headers": {
"Content-Type": "application/json"
}
};
// get the request body
return request.body.text()
.then( (body) => {
// insert the item in a collection
return wixData.insert("zTest_DevDaily", JSON.parse(body));
} )
.then( (results) => {
options.body = {
"inserted": results
};
return created(options);
} )
// something went wrong
.catch( (error) => {
options.body = {
"error": error
};
return serverError(options);
} );
}
--- EXCEL / VBA ---
Sub SendJson()
Dim objHTTP As Object
Dim text As String
Dim jSON As Object
Dim result As String
Dim rng As Range, items As New Collection, myitem As New Dictionary, subitem As New Dictionary, i As Integer, cell As Variant
Set objHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1")
Set rng = Range("A2:A2")
'Set rng = Sheets(1).Range("A2").End(xlDown)) 'dynamic range
i = 0
For Each cell In rng
Debug.Print (cell.Value)
myitem("Title") = cell.Value
myitem("ID") = cell.Offset(0, 1).Value
myitem("Owner") = cell.Offset(0, 2).Value
myitem("Created Date") = cell.Offset(0, 3).Value
myitem("Updated Date") = cell.Offset(0, 4).Value
myitem("VerDate") = cell.Offset(0, 5).Value
items.Add myitem
Set myitem = Nothing
Set subitem = Nothing
i = i + 1
Next
URL = "https://www.MYWEBSITE.com/_functions/myFunction"
objHTTP.Open "PUT", URL, False
objHTTP.setRequestHeader "Content-type", "application/json"
objHTTP.Send ConvertToJson(items, Whitespace:=2)
result = objHTTP.ResponseText
'Some simple debugging
Range("A25").Value = result
Range("A26").Value = ConvertToJson(items, Whitespace:=2)
Set objHTTP = Nothing
End Sub
Я использую EXCEL / JSON конвертер: https://github.com/VBA-tools/VBA-JSON
Я скопировал базу данных в Excel, чтобы применить преобразование, и вот как выглядит значение записи json:
[
{
"Title": "test1",
"ID": "a4ef53df-903c-44e5-a014-f8ae1d937b5f",
"Created Date": "2019-06-21T17:43:38Z",
"Updated Date": "2019-06-23T19:23:51Z",
"VerDate": 3
}
]
ПОЧТА работает
PUT генерирует следующую ошибку (неверный токен ???):
"{" ошибка ":" Название ":" Ошибка " "errorGroup": "Пользователь", "код": "WD_VALIDATION_ERROR"}}"