我在使用Mongoose在MongoDB中創建新文檔時遇到問題。必須在MongoDB中新建一個與Schema完全相同的文檔嗎?
新文檔必須與模式完全相同嗎?
我的意思是,我有以下模式:
ar userSchema = new Schema({
userID: Number,
userName: String,
userEmail: String,
teams:Array,
fbUID: String,
googleUID: String,
twitter: String
});
但要創造一個新的用戶文檔我沒有所有的領域,所以我的文件將不包含所有字段作爲上述架構。
例如,我正在根據上面的Schema添加一個新文檔。我的文檔是:
var users = mongoose.model('users',userSchema);
var user = new users({
userID: id, //give the id of the next user in Dbase
userName: userName,
userEmail: 'userEmail',
teams:[],
fbUID: '1234'
});
user.save(function(err, user){
if(err) return console.error(err);
log.d("user salved", user);
});
所以,我沒有所有的字段,並且我目前無法保存任何文檔。
如果我在新文檔中沒有Schema中的所有字段,這有什麼關係嗎?
UPDATE:
和第二個問題是,我得到的其中之一:
fbUID,
googleUID,
twitter
通過一個功能,我不知道那些我接受了,所以我想保存文檔是這樣的:
function salveUser(userName, socialMediaType, socialMediaID){
var id;
users.count(function(err, count){
if(err){
log.d("Err in counting files")
}
id = count;
});
var user = new users({
userID: id, //give the id of the next user in Dbase
userName: userName,
userEmail: 'userEmail',
teams:[],
socialMediaType : socialMediaID
});
user.save(function(err, user){
if(err) return console.error(err);
log.d("user salved", user);
});
currentSession = sessionOBJ.login(id, socialMediaID);
return currentSession;
}
}
這就是爲什麼我想知道Mongoose是通過我在函數中接收的單詞切換文檔中的密鑰,還是使用了我正在放置的確切單詞,在本例中爲「socialMediaType」。
有人知道嗎?
你的代碼看起來很好。你能否包括一個確切的異常? –
是的。我會更新這個問題。 – debeka