javascript - 当我尝试使用更新方法时,为什么 mongo 说这不是有效的 JavaScript 对象?
问题描述
当我尝试更新记录时出现此错误:(node:2018) UnhandledPromiseRejectionWarning: MongoError: document must be a valid JavaScript object
这是我试图运行的代码:
global.db.collection("groups").find({userId: user_id.toString(), groupNumber:parseInt(realGroupNumber)}).toArray( function (err, group) {
if(err) {console.log(err)};
if(group[0]) {
group[0].students.push(NewRow[row]);
//NOTE: HERE IS WHERE THE ERROR HAPPENS (BELOW)
global.db.collection("groups").update({userId: user_id.toString(), groupNumber:parseInt(realGroupNumber)}), group[0], function (err, group) {
if(err) {console.log(err)};
};
};
});
它一直说 group[0] 不是有效的 JavaScript 对象,但 typeof group[0] 返回“object”。这里还有一个 group[0] 控制台登出的例子:
{ _id: 5df7fcc562f67c0a0b66aefd,
userId: '5d3f42db404e9e0a91fdd9d8',
groupNumber: 3,
selectedLeaders: [ '5df7d27e2e5e1904552a30a4' ],
roomNumber: '333',
groupNotes: '',
students:
[ { firstName: 'June',
userId: '5d3f42db404e9e0a91fdd9d8',
lastName: 'Lopez',
gender: 'female',
groupId: 3,
roomNumber: '1234',
_id: 5dfac3a34c64110809726571 } ] }
非常感谢任何帮助!谢谢!
解决方案
看起来错误是由下面第 7 行的右括号引起的。这是关闭更新,它排除group[0]
和包含回调:
global.db.collection("groups").update({
userId: user_id.toString(),
groupNumber: parseInt(realGroupNumber)
}), group[0], // <---- HERE
function(err, group) {
if (err) {
console.log(err)
};
};
尝试在回调之后将其移动到块的末尾:
//NOTE: HERE IS WHERE THE ERROR HAPPENS (BELOW)
global.db.collection("groups").update({
userId: user_id.toString(),
groupNumber: parseInt(realGroupNumber)
}, group[0],
function(err, group) {
if (err) {
console.log(err)
};
});
也就是说,请注意collection.update()
已被弃用一段时间。您应该考虑更新到至少 3.X 版本的节点驱动程序并使用updateOne
或updateMany
:
https ://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#update
推荐阅读
- java - 扩展 SimpleStringProperty 的问题
- c# - Xamarin.Forms - TcpClient 连接失败并出现 System.Net.Sockets.SocketException (0x80004005):网络无法访问
- ruby-on-rails - 如何在我的控制器中使用委托来重构代码?
- angular - 我正在尝试将字符串变量(城市)从服务传递到控制器,但它没有正确传递
- video.js - 使用 videojs-panorama 的 180 度视频播放器无法按预期工作
- haskell - 表达式中的模式语法
- swift - 如何保存在单元格内按下按钮的动作,以便我可以添加图像而不会复制或消失
- c# - 从服务打开弹出窗口
- java - 如何在 Java 中读取“.csv”文件?
- crm - vtiger 7.1安装错误已弃用:与其类同名的方法在未来版本的PHP中将不再是构造函数