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至少升级到。)