Javascript 下拉列表上的mongoose查询是否已更改

Javascript 下拉列表上的mongoose查询是否已更改,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,首先,我想说,我对JS和mongoose/MongoDB是新手 我制作了一个页面,其中显示了我在mongoDB中存储的一些数据,这很好。现在我制作了一个带有一些选项的下拉菜单,我想根据我在下拉菜单中选择的值更新一个字段 基本上我的问题是:当下拉菜单的onchange被触发时,如何更新mongoDB中的一个字段 以下是我要更新的模式: /src/models/itemmodel.js const mongoose = require('mongoose'); const AutoIncrement

首先,我想说,我对JS和mongoose/MongoDB是新手

我制作了一个页面,其中显示了我在mongoDB中存储的一些数据,这很好。现在我制作了一个带有一些选项的下拉菜单,我想根据我在下拉菜单中选择的值更新一个字段

基本上我的问题是:当下拉菜单的onchange被触发时,如何更新mongoDB中的一个字段

以下是我要更新的模式:

/src/models/itemmodel.js

const mongoose = require('mongoose');
const AutoIncrement = require('mongoose-sequence')(mongoose);
console.log('/src/models/itemmodel.js');

// Create a Schema for items
const itemSchema = new mongoose.Schema({
    title: { type: String, default: '' },
    description: { type: String, default: '' },
    createdBy: { type: String, default: '' },
    masco: { type: String, default: '' },
    projectName: { type: String, default: '' },
    projectNumber: { type: Number, default: '' },
    createdDate: { type: String, default: '' },
    lastUpdate: { type: String, default: '' },
    status: { type: String, default: 'New' },
    responsible: { type: String, default: 'Not defined' },
    affectedSystem: { type: String, default: 'Not defined' },
    seqId: Number,
    itemId: { type: String, default: '' },
});

module.exports = mongoose.model('Item', itemSchema);
我就是这样设置下拉菜单的:

<% var id = ''; %>
  <select name="" id="statusDropdown" class="dropbtn" onchange="getSelectedValue(this);">
      <% var states = [ 'New', 'Assigned', 'In progess']; %>
      <% var selectedId = items._id; %>
      <%  for ( var i = 0; i < states.length; i++ ) { %>
        <% var selected = ( id == i ) ? "selected" : ""; %>
        <option value='{"state": "<%=states[i]%>", "id": "<%=items._id%>"}' >  <%=states[i] %> </option>
        <% } %>
  </select>
在src()中添加路径时,该文件存在并位于文件夹中

提前谢谢你,我很感谢你给我的每一个帮助

致以最良好的祝愿,
Christian

所以您有客户端和服务器端代码。您不能通过onchange事件直接从客户端访问mongodb。在OnChange事件中,您必须执行ajaxget或post请求到后端(nodejs)操作,在该事件中,您将能够访问和更新您的mongoDBHey!谢谢你提供的信息!它正在工作!
<script>
  var ItemModel = require("../src/models/itemmodel.js");
  
  function getSelectedValue(selectObject) {
      var statusOfItem = JSON.parse(selectObject.value);
      console.log(statusOfItem.state);
      console.log(statusOfItem.id);
    
    
      var e = document.getElementById("statusDropdown");
      var newStatus = e.options[e.selectedIndex].value;
      console.log(statusOfItem);
      ItemModel.findOneAndUpdate({ _id: statusOfItem.id }, { $set: { status: statusOfItem.state } }, 
             {new: true})
            .then((updatedItem) => {
                console.log(updatedItem);
            })
            .catch((err) => {
                    console.error('Error when updating with new status ' + err);
                });
        }
        
</script>
GET http://127.0.0.1:3000/src/queries.js net::ERR_ABORTED 404 (Not Found)