使用Node.js驱动程序插入MongoDB

时间:2014-07-10 08:18:29

标签: node.js mongodb

我试图找出为什么我的ReST服务器不会向集合中插入多个文档。

以下工作正常,但如果我尝试创建一个稍微不同的新文档,则不会发生任何事情。

Cruds.prototype.save = function(collectionName, obj, callback) {
    console.log('obj', obj);
    this.getCollection(collectionName, function(error, the_collection) {
        if( error ) callback(error)
        else {
            obj.created_at = new Date(); 
            the_collection.insert(obj, {safe: true}, function() {
                callback(null, obj);
            });
        }
    });
};

在上面,只需检查集合并插入文档。当我启动服务器并发布到它时,只能工作一次。后续帖子不保存。连接是否自动关闭?有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

发现问题。记录之后,我意识到ObjectId没有在insert上唯一生成(我没有真正期望),从而创建了唯一的密钥冲突。解决方案是将ObjectId与插入一起传递,如下所示:

Cruds.prototype.save = function(collectionName, obj, callback) {
    console.log('obj', obj);
    this.getCollection(collectionName, function(error, the_collection) {
        if( error ) callback(error)
        else {
            obj._id = ObjectID();
            obj.created_at = new Date();
            var document = merge(schema.user, obj);
            the_collection.insert(document, {safe: true}, function(err, result) { 
                callback(err, result);
            });
        }
    });
};