使用猫鼬模式将多个选择元素值中的值存储到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 形式显示图像

使用Mongoose(ORM)将多个应用程序与一个mongo数据库连接

猫鼬模式参考

猫鼬更新对象数组中匹配条件的元素的值