簡體   English   中英

Nodejs MongoDB,findOneAndUpdate 不更新任何數據

[英]Nodejs MongoDB, findOneAndUpdate is not updating any data

我正在嘗試使用findOneAndUpdate()更新我的 mongodb 數據。 它不返回任何錯誤。 錯誤為null 但它不會更新任何數據。 在控制台中,我收到此消息:

Mongoose: datas._findAndModify({ _id: undefined }, [], { '$set': { note: undefined, date: undefined, title: undefined }

我的架構:

var mongoose = require("mongoose")
var Schema = mongoose.Schema

var note = new Schema({
    title:String,
    date:String,
    note:String
})

const Data = mongoose.model("Data", note)

module.exports = Data

服務器.js:

const express = require('express')
const mongoose = require('mongoose')
var app = express()
var Data = require('./notesSchema')


mongoose.connect('mongoDB://localhost/newDB',{
    
  })
mongoose.connection.once("open", () => {
    console.log("connected to DB!")
}).on("error", (error)=>{
    console.log("failed to connect" + error)
})
app.get("/hi", (req,res)=>{
    res.send("Hello World.")
})
// Create a NOTE
app.post("/create", (req, res)=> {
    var note = new Data({
        note: req.get("note"),
        titile: req.get("title"),
        date: req.get("date"),
    })
    note.save().then(() => {
        if(note.isNew == false){
            console.log("Saved data!")
            res.json({response: "ok"});
        }else{
            console.log("Failed to save data")
        }
    })
})

// http://192.168.0.102:8081/create
var server = app.listen(8081, "192.168.0.102", ()=>{
    console.log("server is running")
})


mongoose.set('debug', true)

// update a Note
app.post("/update", (req,res)=>{
    Data.findOneAndUpdate({
        _id: req.get("id")
    }, {
        title: req.get("title"),
        date: req.get("date"),
        note: req.get("note"),
    },{new: true},(err)=>{
        console.log("failed to update  " + err)
    })
    res.send("Updated")
})


// fetch all Notes
app.get("/fetch", (req,res)=>{
    Data.find({}).then((DBitems) => { 
        res.send(DBitems)
    })
})

// Delete a Note
app.post("/delete", (req,res) =>{
    Data.findOneAndRemove({
        _id : req.get("id")
    },(err) => {
        console.log(err)
    })
})

這里有什么問題?

您的 ID 可能為空。 正如@AdhamLucasdaSilvaOliveira 所說,請求有參數

app.post('/update:id', (req, res) => {
    Data.findOneAndUpdate({'_id': req.params.id, {dataset} })
})

如果 req.get('title') 為 null 嘗試使用req.body.title

我認為一個問題是在req.get()因為請求通常有參數和查詢。 所以嘗試使用req.query.title如果你傳遞這樣的標題: /example?title=cool或者req.params.title如果你傳遞這樣的標題: /example/cool

另一個問題在於:

app.post("/create", (req, res)=> {
    var note = new Data({
        note: req.get("note"),
  ->>>  titile: req.get("title"),

因為在你的模式,第二場被命名為title ,而不是titile

這取決於您傳遞參數的位置。

1) If you pass params in the body with json:

     var note = req.body.note;

2) If you pass params with route like /localhost:3000/update/params(id or note)

      var note = req.params.note

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM