使用猫鼬模式将多个选择元素值中的值存储到MongoDB中的数组中
Posted
技术标签:
【中文标题】使用猫鼬模式将多个选择元素值中的值存储到MongoDB中的数组中【英文标题】:Store value from multiple select element value into array in MongoDB using mongoose schema 【发布时间】:2019-05-05 04:58:53 【问题描述】:大家好,提前感谢,
我有一个带有 div 元素的 html 表单,它有一个选择标签和两个用于 + 和 - 的按钮。用户可以单击 + 按钮复制选择标签(最多 5 次)。我需要使用 mongoose 将 select 标记中的值存储在 MongoDB 中。我不确定如何在 JS 中获取此值并将其存储在变量中以传递给 MongoDB。
哈巴狗文件
div(id='divDay1')
button.btnDay1(type='button' onclick='appendRow(this)') +
button.btnDay1(type='button' onclick='removeRow(this)') -
label(for='Day1') Day1:
div
Select#Day1.form-control1(type='select' name='Day1' required='true' )
for task in tasks
option(value=task._id) #task.TaskName
// JS代码
var x=1;
//Add select list
function appendRow(elem)
//get parent node
var parent = elem.parentNode;
//console.log(parent);
//get last child element
var l=parent.lastChild;
//console.log(l);
//var d = document.getElementById(parent.id);
var s = document.getElementById( l.firstChild.id ).cloneNode(true);
s.id = "Select"+x;
//var s1=document.getElementsByClassName("form-control1")
//console.log(d);
//console.log(s);
//Add only 4 child elements
if(l.childElementCount<4)l.appendChild(s);;
//increment x
x++;
;
// remove select list
function removeRow(elem)
//alert("JS file Load");
var parent = elem.parentNode;
//get last child element
var l=parent.lastChild;
// remove last child element, Remove upto 1 element
if(l.childElementCount>1)l.removeChild(l.lastChild);;
;
【问题讨论】:
【参考方案1】:使用这段代码sn-p获取数组中的表单数据
函数 getSelectValArr()
var selectValArr = [];
$(':input', $('#div1')).not('button').each(function() selectValArr.push($(this).val()););
return selectValArr;
确保 jQuery 已包含在您的 html 中。
然后使用这个数组向服务器发送数据。
var setting = url: 'your_api_url', data: "someKey":
getSelectValArr() , method: 'POST', success: function(response) ,error: function(error) ;
$.ajax(setting);
【讨论】:
以上是关于使用猫鼬模式将多个选择元素值中的值存储到MongoDB中的数组中的主要内容,如果未能解决你的问题,请参考以下文章
如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中
将图像文件存储在猫鼬模式中的二进制数据中并以 html 形式显示图像