Я пытаюсь вставить массив данных в веб-службу узла js. Код выглядит так.
$scope.addList = function(task,subtask){
subtask.checked= !(subtask.checked);
var data = {
"taskId": task._id,
"subTaskName": subtask.subTaskName,
};
if(subtask.checked){
angular.forEach(data, function(value,key){
this.push(key + ': ' + value);
},selectedMap);
}
else{
delete selectedMap;
}
}
Если я напечатаю selectedMap в консоли, я получаю массив следующим образом.
tasks: {
0: "taskId: 1"
1: "subTaskName: SOW Updation"
2: "taskId: 1"
3: "subTaskName: Estimation - High Level"
4: "taskId: 2"
5: "subTaskName: Feasibility Study"
}
Но мне нужно сделать так, чтобы вставить в БД
subTasks: [{
"task_id": 1,
"subTaskName": "Requirements Analysis"
},
{
"subTaskName": "Feasibility Study",
"task_id": 2
},
{
"subTaskName": "Requirement Elicitation",
"task_id": 3
},
{
"subTaskName": "Requirements Understanding",
"task_id": 4
},
{
"subTaskName": "Requirement Documentation",
"task_id": 5
}]
может кто-нибудь, пожалуйста, помогите мне сделать это..?
Вы добавляете значение ключа в массив вместо добавления объекта.
Исходя из вашего вывода, selectedMap
не определен правильно. Его следует selectedMap = [];
вместо selectedMap = {};
где бы вы ни определились в коде.
Попробуй это:
$scope.addList = function(task,subtask){
subtask.checked= !(subtask.checked);
var data = {
"task_id": task._id, // Updated key name based on your required output
"subTaskName": subtask.subTaskName,
};
if(subtask.checked){
selectedMap.push(data); // Add data object in array instead of key value pair
} else {
selectedMap = selectedMap.filter(function(obj) {
return (obj.task_id !== data.task_id && obj.subTaskName !== data.subTaskName);
});
}
this.push(data)
-data
уже имеют целевой формат ??