MongoDB向users集合插入用户时出现SyntaxError报错如何解决
MongoDB插入数据语法错误修复方案
错误根因排查
本次抛出的SyntaxError: missing : after property id报错由以下两处语法问题导致:
- 直接触发报错的问题出在第6行的
Birthday字段定义:你错误地在Birthday下嵌套了一层对象,且将new Date作为未加引号的属性名使用,JS解析器无法识别带空格的未引号属性名,因此抛出语法错误。 - 存在隐藏报错风险:
FavoriteMovies数组中的MongoDB ObjectId值未用ObjectId()方法包裹,直接写字符串会被解析为未定义的标识符,修复语法错误后会触发新的报错。
修复方案
常规场景(生日直接存储为日期类型)
直接将Birthday赋值为Date实例,不需要额外嵌套对象,同时修正ObjectId的写法,修正后的完整代码如下:
var user1 = { Username: "joonyoftv", Password: "joon123", Email: "joony@bmail.com", Birthday: new Date("2000-08-02"), FavoriteMovies: [ ObjectId("61942e53b8d3d951230f0980"), ObjectId("61943aabb8d3d951230f0983") ] } // 执行插入操作 db.users.insertOne(user1)
特殊场景(需要保留Birthday嵌套对象结构)
如果业务逻辑要求Birthday为嵌套对象,需要给嵌套字段指定合法的属性名,示例如下:
var user1 = { Username: "joonyoftv", Password: "joon123", Email: "joony@bmail.com", Birthday: { date: new Date("2000-08-02") }, FavoriteMovies: [ ObjectId("61942e53b8d3d951230f0980"), ObjectId("61943aabb8d3d951230f0983") ] } // 执行插入操作 db.users.insertOne(user1)
内容的提问来源于stack exchange,提问作者kuhriboh
相关产品推荐
相关产品推荐

