我在服务器上使用Mongo运行我的NodeExpress应用程序时遇到了困难。尝试写入以写入DB时,会发生以下错误。只有某些模型似乎会产生这种失败,其他模型的运行没有问题。
它特别奇怪,因为它在我的本地机器上运行没有任何问题。使用Same Node和MongoDB版本,bot通过git等同部署。
错误确实没有提供有关查找错误的位置的大量信息。任何人都有提示从哪里开始?
Error: key $conditionalHandlers must not start with '$'
at Error (native)
at serializeInto (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:741:19)
at serializeObject (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:300:18)
at serializeInto (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:766:17)
at serializeObject (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:300:18)
at serializeInto (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:766:17)
at serializeObject (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:300:18)
at serializeInto (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:608:17)
at serializeObject (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:300:18)
at serializeInto (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:766:17)
at serializeObject (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:300:18)
at serializeInto (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:608:17)
at serializeObject (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:300:18)
at serializeInto (/root/casinofuchs/node_modules/bson/lib/bson/parser/serializer.js:766:17)
at serialize (/root/casinofuchs/node_modules/bson/lib/bson/bson.js:49:27)
at Query.toBin (/root/casinofuchs/node_modules/mongodb-core/lib/connection/commands.js:143:25)
答案 0 :(得分:1)
此错误消息表明字段名称违反了MongoDB命名限制。具体而言,字段名称为must not start with a dollar sign character。
答案 1 :(得分:1)
好像我发现了这个问题。
我的模型中有以下定义:
logo:{ type:[ImageSchema], default:[ImageSchema] }
将其切换回:
logo:{ type:[ImageSchema] }
or
logo:[ImageSchema]
......让它再次发挥作用。
这甚至在我的Macbook上停止了工作。 可能是,这些天有一些插件的更新导致这个失败了吗?
在这种情况下,为ImageSchema设置默认值的适当解决方案是什么?