MongoDB和Mongoose的奇怪行为

时间:2015-01-08 12:57:49

标签: node.js mongodb mongoose

所以,首先我想原谅如果我的问题是愚蠢的,我在node.js / mongodb /等方面的经验很少。 我在mongoDB中有下一个文档模式:

var schema = new mg.Schema({
    token: { type: String, required: true },
    lastLog: { type: Date, default: Date.now() }
});
var User = mg.model('users', schema);

我试图找到所有带有令牌字段的文件等于tok,如果找不到任何文件 - 创建它,或者如果有文件 - 更新它的字段lastLog。

User.find({ token: tok }, function (err, docs) {
    if (err) util.error('error: ', err);
    else {
        if (docs && docs.length == 0) {
            var u = new User({ token: tok });
            u.save();
        }
        else User.update({ token: tok }, { $set: { lastLog: Date.now() } });
    }
});

但是,我得到了奇怪的错误(就我而言):

        u.save();

"错误:在新的ObjectID处传入的参数必须是12个字节的单个字符串或24个十六进制字符的字符串。"

我无法理解为什么会出现在这里,因为在互联网上的所有示例中都没有人有同样的错误。 谢谢你的回答!

1 个答案:

答案 0 :(得分:0)

尝试如下;

var u = new User();
u.token = tok;
u.save(function(err) {
   if (err) handleError(err);
}