Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongo本机未创建数据_Javascript_Node.js_Mongodb_Express_Node Mongodb Native - Fatal编程技术网

Javascript mongo本机未创建数据

Javascript mongo本机未创建数据,javascript,node.js,mongodb,express,node-mongodb-native,Javascript,Node.js,Mongodb,Express,Node Mongodb Native,如果数据库中存在facebook id,我会尝试创建数据,否则会创建新数据,但是第一个条件可以正常工作,但是当创建数据时,什么都不会发生,ony get无法读取null的属性“provider”甚至我硬编码了一个provider值 db.collection('accounts', function(err, collection){ collection.findOne({'email': fbEmail}, function(err, item){ var provi

如果数据库中存在facebook id,我会尝试创建数据,否则会创建新数据,但是第一个条件可以正常工作,但是当创建数据时,什么都不会发生,ony get
无法读取null的属性“provider”
甚至我硬编码了一个provider值

db.collection('accounts', function(err, collection){
    collection.findOne({'email': fbEmail}, function(err, item){
        var providerId = item.provider.facebook.id;
        console.log("facebook id should be: "+providerId);
        if(providerId == ""){
            collection.update({email:fbEmail, 'provider.facebook.id':""}, {$set: {"provider.facebook.id": fbId}}, {safe:true}, function(err){
                if(err){
                    console.log(err);
                }else{
                    console.log("id updated!");
                };
            });
        }else{ //creates a new user
            console.log("creating a new account...");
            collection.update({'email': fbEmail}, {
                'email': fbEmail,
                'provider':
                    {
                        'facebook': {'id': fbId},                            
                        'twitter': {'id': ""}                                
                    }                    
            }, {upsert:true}, function(err, doc){
                if(err){
                    console.log("Error finding email "+err);
                }                
            });             
        }
    });
});
科目
收款凭证中的一个(第一个)具有
provider=null
。您可以通过以下方式修改
findOne
条件以避免它:

collection.findOne({'email': fbEmail, 'provider': {$exists: true}}, ...

请注意,此修改只会跳过所有未设置
provider
字段集(或设置为
null
)的帐户。

findOne
回调中,在检查
item
之前,您需要检查
item
是否为null<如果这是一封新电子邮件,则code>项将为
。很抱歉,如果我没有完全理解您的笔记,我仍需要执行第一次
收集。当提供商中的facebook id为
时更新
,但是如果我跳过所有没有
provider
字段设置的帐户,那么我不确定如何再次执行上述操作。我想我解决了它=)只需将创建新电子邮件放在
findOne
之外,并使用
{$exists:true}
如您所说,谢谢!我写这张便条的目的是警告你,如果没有提供提供者的话。不管怎样,我很高兴你解决了这个问题。不客气!实际上仍然存在一个问题,如果电子邮件不存在,我仍然需要创建新数据,查看mongodb查询文档……在这种情况下,我通常获取帐户(
findOne
)(如果存在),然后处理或创建检索到的对象,最后保存(
save(usert=true)
)它。