Node.js REST API服务器更新,带有_id属性

Node.js REST API服务器更新,带有_id属性,node.js,mongodb,Node.js,Mongodb,我试图使用_id属性更新我的REST API,但如果我尝试使用unique _id,则不会发生任何事情。如果我使用房间名称或房间号等参数更新我的输入,则会起作用。谁能帮帮我吗?我哪里出错了?这让我简直疯了 app.put('/api/conferenceRooms/:_id&:_name', (req, res) => { var id = req.params._id; var name = req.params._name; var conference

我试图使用_id属性更新我的REST API,但如果我尝试使用unique _id,则不会发生任何事情。如果我使用房间名称或房间号等参数更新我的输入,则会起作用。谁能帮帮我吗?我哪里出错了?这让我简直疯了

app.put('/api/conferenceRooms/:_id&:_name', (req, res) => {
    var id = req.params._id;
    var name = req.params._name;
    var conferenceRoom = req.body;
    ConferenceRoom.updateConferenceRoom(id, name, conferenceRoom, {}, (err, conferenceRoom) => {
        if(err){
            throw err;
        }
        res.json(conferenceRoom);
    });
});


// Update ConferenceRoom
module.exports.updateConferenceRoom = (id, name, conferenceRoom, options, callback) => {
    var query = {_id: id, name:name};
    var update = {
        temperature: conferenceRoom.temperature
    }
    ConferenceRoom.findOneAndUpdate(query, update, options, callback);
}

我已经检查了1000次了

你的名字可能没有定义或是错了

改变

'/api/conferenceRooms/:_id&:_name'


我认为这是因为您试图用一个id字符串查询
\u id
,但它很可能是MongoDB中的类型
ObjectId
(我相信是默认的)。尝试以下方法:

var ObjectId = require('mongoose').Types.ObjectId; 
var query = { _id: new ObjectId(id) };

您将拥有更改的Url。就像现在一样

'/api/conferenceRooms/:_id&:_name'
:\u id是请求URL参数,:\u name是请求查询参数

您可以做的是将两者都更改为Reqest URL或 查询参数

访问URL参数时-请求参数\u id


访问查询参数-req.Query.\u id

如果我访问ngrok中的req.parms\u id,我会看到PUT/api/conferenceRooms/&:\u IoT 404在使用req\u Query时找不到。\u id相同:(它没有看到我的id。在ngrok中,我可以看到PUT/api/conferenceRooms/&:_iot404未找到,当我发送标题内容类型application/json并添加原始正文{“temperature”:4}
'/api/conferenceRooms/:_id&:_name'