.save()挂起并且仅接收_id

时间:2019-07-26 21:19:20

标签: javascript node.js mongodb mongoose

保存到MongoDB数据库的问题

这是我第二次尝试发布到数据库,这仍然是新知识。我正在从html表单接收字符串,并尝试保存到数据库中。我已经成功连接到mongodb,设置了我的发布路线,设置了我的模型,现在尝试发送http请求以将其保存到db。在设置模型之前,我可以进行console.log记录从表单中收到的数据。但是在设置模型并尝试获取将其保存到db的路径后,它只是挂起。如果我注释掉main.save()和console.log(main),我得到的alll是一个_id。 我不知道我在哪里出错

index.js

Sub Rpt1()

   MsgBox "This worked"

End Sub

路线

const express = require('express')
const path = require('path')
const routes = require('../routes/routes')

const app = express()
const port = 3000

app.use(express.json())
app.use(express.urlencoded({ extended: false }))
app.use(express.static(path.join(__dirname, '../public')))
app.use(routes)

app.listen(port, () => {
    console.log('Server is up on port ' + port)
})

模型

const express = require('express')
const Main = require('../src/model')
const router = new express.Router()


router.post('/', async (req, res) => {
    const main = new Main(req.body)
    console.log(main)

    try{ 
        await main.save()
        res.status(201).send(main)
    } catch (e) {
        res.status(400).send(e)
        console.log('Not working!')
    }
})


module.exports = router

接收_id,但挂在.save()

1 个答案:

答案 0 :(得分:0)

这是因为您要将整个req.body传递给数据库。将此const main = new Main(req.body)更改为此

let main= new Main({

 total_check:req.body.total_check

});

只要确保您从前端或邮递员那里收到正确的数据即可。

save返回一个回调,因此也要处理该回调

main.save((err,main)=>{
   if(err) {console.log(err) }
   else { res.status(201).send(main) }
});