Javascript 下拉列表上的mongoose查询是否已更改
首先,我想说,我对JS和mongoose/MongoDB是新手 我制作了一个页面,其中显示了我在mongoDB中存储的一些数据,这很好。现在我制作了一个带有一些选项的下拉菜单,我想根据我在下拉菜单中选择的值更新一个字段 基本上我的问题是:当下拉菜单的onchange被触发时,如何更新mongoDB中的一个字段 以下是我要更新的模式: /src/models/itemmodel.jsJavascript 下拉列表上的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
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)