Express.js node.js尝试更新.update()mongoDB时出现语法错误

Express.js node.js尝试更新.update()mongoDB时出现语法错误,node.js,mongodb,express,Node.js,Mongodb,Express,这个很好用 app.post('/users', (req, res) => { console.log(req.body, req.body.uid) }) 但这会抛出一个语法错误并崩溃。我的mongoDB连接良好 app.post('/users', (req, res) => { var myUid = req.body.uid; db.collection('users').update( {uid: myUid},

这个很好用

app.post('/users', (req, res) => {
        console.log(req.body, req.body.uid)
    })
但这会抛出一个语法错误并崩溃。我的mongoDB连接良好

app.post('/users', (req, res) => {
    var myUid = req.body.uid;
    db.collection('users').update(
        {uid: myUid},
        req.body,
        {upsert: true},
    )
})
帮助

使用此库,您的生活将变得轻松。 使用Mongoose.js,您的代码将如下所示

///// routes.js
import User from './model';
app.put('/users', (req, res) => {
    User.findByIdAndUpdate(req.body.uid, req.body, {upsert:true, new:true})
    .then(updatedUser => res.json(updatedUser))
    .catch(err => next(err));
})

我刚刚将req.body更改为一个对象

app.post('/users', (req, res) => {
    var myUid = req.body.uid;
    db.collection('users').update(
        {uid: myUid},
        {
         uid: req.body.uid
         name: req.body.name
         etc...
        },
        {upsert: true},
    )
})

您面临的错误是因为您试图在对象中使用点符号作为字段。相反,你应该这样做

app.post('/users', (req, res) => {
  var myUid = req.body.uid;
  var myObjectBody = req.body;
  db.collection('users').update(
      {uid: myUid},
      myObjectBody,
      {upsert: true},
  )
})

你错过了回拨或承诺解决方案。请参阅文档中的。不过,单凭这一点不应该“抛出错误”。因此,您的“语法错误”更可能是由于
db没有方法集合
,或者
db未定义
,这是一个与
db
变量范围相关的问题。如果您仍然不明白这意味着什么,请显示实际错误或完整的“最小”列表以进行复制。语法错误可能来自
{upsert:true},
末尾的尾随逗号。(注意:如果这是原因,则应将Node.js至少升级到。)