Я добавляю новые данные в свою модель oData, создавая новую запись следующим образом:
_.forEach(insert, data => {
var entry = (modelprefix + "('" + data.COL01 + "')");
oModel.create(modelprefix, data, mParameters);
});
Этот код работает с поиском строк и чисел, но когда дело доходит до даты, он не работает.
Моя целевая структура содержит столбец 0КАЛЬДЕНЬ, в котором должны быть проанализированы значения из «вставки» модели JSON. Я не получаю ни ошибки, ни чего, просто ничего не происходит ..
Я подозреваю, что это потому, что 0КАЛЬДЕНЬ ожидает, что объект будет вставлен, но получает только строку. Но что я могу сделать?
Это один из объектов моей Insert-JSON-Model: COL04 - это дата, которую нужно вставить. Он уже имеет правильный формат для моего SAP! (dd.mm.yy
)
Я думаю, я понимаю, что вы делаете, это должно взять ваши исходные данные, пропустить их через вещь «типы» и создать дату, если это введенная дата. В демонстрационных целях он также преобразует числа в массиве типов.
var data = [
{"AGIMENDO Info Objekt 1": "00000000", "Beschreibung Kurz": "Test0", "Währung": "200.00", "__rowNum__": 1},
{"AGIMENDO Info Objekt 1": "00000001", "Beschreibung Kurz": "Update1", "Währung": "456.00", "__rowNum__": 2},
{"AGIMENDO Info Objekt 1": "00000002", "Beschreibung Kurz": "Test2", "Währung": "12.00", "__rowNum__": 3},
{"AGIMENDO Info Objekt 1": "00000003", "Beschreibung Kurz": "Test3", "Währung": "549153.00", "__rowNum__": 4},
{"AGIMENDO Info Objekt 1": "00000004", "Beschreibung Kurz": "Text", "Währung": "1.05", "__rowNum__": 5},
{"AGIMENDO Info Objekt 1": "00000005", "Beschreibung Kurz": "13.08.11", "Währung": "465.00", "__rowNum__": 6},
{"AGIMENDO Info Objekt 1": "00000006", "Beschreibung Kurz": "Test21", "Währung": "4594.00", "__rowNum__": 7}
];
var types = [
{type: "number", value: "200.00"},
{type: "number", value: "456.00"},
{type: "number", value: "12.00"},
{type: "number", value: "549153.00"},
{type: "number", value: "1.05"},
{type: "date", value: "13.08.11"},
{type: "number", value: "465.00"}
];
var typeVals = types.map(el => el.value);
function toDate(str) {
var dateParts = str.split(".");
var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);
return date;
}
function toNum(str) {
return parseFloat(str);
}
data.forEach(row => {
var keys = Object.keys(row);
keys.forEach(k => {
var t = typeVals.indexOf(row[k]);
if (t != -1) {
switch (types[t].type) {
case "date":
row[k] = toDate(row[k]);
break;
case "number":
row[k] = toNum(row[k]);
break;
}
}
});
});
console.info(data);
спасибо, Джеймс, для меня это имеет смысл, но теперь мне нужен динамический способ получения этих данных, поскольку не всегда COL04 содержит даты. Я добавил новый вопрос о том, как назначить поле типа для каждой ячейки, чтобы я можете проверить это, а затем использовать свое решение. Может, ты тоже сможешь мне с этим помочь?
Хорошо, я нашел способ назначить "тип", теперь я вернулся к вашему решению, но не могу получить динамический способ.
Благодарность! который выдает ошибку "Ошибка при разборе XML-потока" .. действительно не знаю почему: O
Здесь нет XML, звучит как новая проблема.
Я знаю, что XML не существует ... что мне делать?
Если он ожидает объект, пробовали ли вы преобразовать эту строку в объект Date?