MongoDB-引用错误:未定义StartWithDigit

MongoDB-引用错误:未定义StartWithDigit,mongodb,Mongodb,我正在为自己做一个兼职项目,在我的URL简写器中,我在我们的统计页面(示例:)上发现一个错误,似乎只有在链接创建一段时间/累积点击次数后才会显示,然后它会收到下面的错误消息: ReferenceError: startsWithDigit is not defined at Object.eval [as toVersionString] (eval at makeFunction (/home/xd6/node_modules/mongolian/node_modules/buffal

我正在为自己做一个兼职项目,在我的URL简写器中,我在我们的统计页面(示例:)上发现一个错误,似乎只有在链接创建一段时间/累积点击次数后才会显示,然后它会收到下面的错误消息:

ReferenceError: startsWithDigit is not defined
    at Object.eval [as toVersionString] (eval at makeFunction (/home/xd6/node_modules/mongolian/node_modules/buffalo/lib/bson.js:380:17))
    at Object.eval [as toString] (eval at makeFunction (/home/xd6/node_modules/mongolian/node_modules/buffalo/lib/bson.js:380:17))
    at String (unknown source)
    at Writer._name (/home/xd6/node_modules/mustache/mustache.js:292:35)
    at Writer._escaped (/home/xd6/node_modules/mustache/mustache.js:296:32)
    at renderFunction (/home/xd6/node_modules/mustache/mustache.js:357:28)
    at subRenders.(anonymous function) (/home/xd6/node_modules/mustache/mustache.js:328:18)
    at Writer._section (/home/xd6/node_modules/mustache/mustache.js:240:21)
    at renderFunction (/home/xd6/node_modules/mustache/mustache.js:345:28)
    at Writer._compile.cache.(anonymous function) (/home/xd6/node_modules/mustache/mustache.js:224:16)
    at Writer.render (/home/xd6/node_modules/mustache/mustache.js:204:34)
    at Object.exports.render (/home/xd6/node_modules/mustache/mustache.js:596:20)
当我在控制台中运行mongo并执行
db.urls.find()
时,我得到以下响应:

{ "short" : "aa", "long" : "http://xd6.co/Projects/url-shortener", "created" : "2013-01-03 7:11 UTC", "clicks" : 0, "visitors" : [ ], "subscribers" : [ ], "_id" : ObjectId("50e52f2b000000d358000002") }
{ "short" : "ab", "long" : "http://google.com", "created" : "2013-01-06 1:17 UTC", "clicks" : 0, "visitors" : [ ], "subscribers" : [ ], "_id" : ObjectId("50e8d0c2000000d358000003") }
{ "short" : "ac", "long" : "http://xd6.co/u/", "created" : "2013-01-07 5:54 UTC", "clicks" : 0, "visitors" : [ ], "subscribers" : [ ], "_id" : ObjectId("50ea6332000000435b000002") }
ReferenceError: startsWithDigit is not defined
这表明这是一个mongo错误,而不是代码中的错误。控制台中的Mongo也给出了与nodejs程序本身不同的结果。它甚至没有显示所有确实存在的现有文档,例如,“ae”在mongo控制台输出中不存在,但nodejs显然正在为它查找数据()

这似乎只是URL集合的问题,因为数据库中的其他两个集合没有返回错误

在有人评论可能使用错误的db/集合来解释nodejs在何处查找其他数据(使用XD6 db和URL集合)之前:


你真的能从一个干净的数据库开始,用一些代码来重现它吗?您是否定义了名为startsWithDigit的某种javascript函数

是否尝试验证集合:
db.url.validate(true)
?如果它报告了问题,您可以尝试并删除数据库。看起来它没有任何错误,它会返回
“valid”:true,“errors”:[],“ok”:1
。这里的完整输出:我从一个干净的数据库重新启动,得到了相同的问题,不,我没有定义一个具有该名称的函数,如果您没有注意到,它实际上在mongo数据库中显示了相同的错误,这意味着它不在我的代码中。然而,当我删除添加到数据库中的geoip变量时,错误似乎消失了。如果你愿意,我可以在pastebin上发布一个片段。事实上,如果你能从一个空的数据库中使用控制台来复制它,那会更好,你使用的是什么样的服务器版本和操作系统。如果它是可复制的,它可能是一个服务器错误。Xen VPS上的Ubuntu 12.04。另外,我真的认为错误来自进入mongodb的useragent/geoip数据,因为当我在nodejs中注释时,它似乎没有破坏数据库。是的,看起来它与您实际插入的内容有关。我只是通读了mongodb代码,没有名为startsWithDigit的方法。您可能希望在将结果插入MongodbAny之前对其进行清理—您知道如何清理NodeJS中的数据吗?我正在插入JSON。()用于导致问题的代码块。右键位于
url.update({short:req.params.short},{'$set':{clicks:url.clicks+1},$push':{visitors:visitor})如果我删除访问者,它不会破坏数据库。
> show dbs
XD6 0.0625GB
local   (empty)
test    (empty)
> use XD6
switched to db XD6
> show collections
pages
posts
system.indexes
urls