我試圖創建數據,如果在數據庫中存在一個Facebook ID其他創建新的數據,但第一個條件工作正常,但是當它的創建數據什麼也沒有發生,ONy得到connot read property 'provider' of null
即使我硬編碼提供者值。mongo原生不創建數據
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);
}
});
}
});
});
在你的'findOne'回調函數中,你需要在檢查'item.provider'之前檢查'item'是否爲'null'。如果這是一個新的電子郵件,'item'將是'null'。 – JohnnyHK