Я использую MongoDB для сохранения данных для пользователей приложения в:Mongoose не работает с двойными кавычками?
mongoose.connect(dBAddress, function(err) {
if (err) {
console.log('WARNING: Cannot connect to mongoDB at: ' + dBAddress);
} else {
dBConnected = true;
console.log('Connected to mongoDB at: ' + dBAddress);
}
});
var userSchema = new mongoose.Schema({
'userName': String,
'password': String,
'userId': String,
'lastModificationTime': {type: String, default: Common.getCurrentFormanttedTime()},
'createdTime': {type: String, default: Common.getCurrentFormanttedTime()}
});
User = mongoose.model('User', userSchema);
И я вставить данные как:
var newUser = {
'userName': newUserInfo.userName,
'password': newUserInfo.password,
'userId': newUserId,
'lastModificationTime': Common.getCurrentFormanttedTime(),
'createdTime': Common.getCurrentFormanttedTime()
};
var user = new User(newUser);
user.save(function(err) {
if (err) {
console.log(err);
console.log('There is a problem saving the user info');
} else {
console.log('A new user saved: ');
console.log(newUser);
}
});
Теперь я хочу, чтобы проверить, есть еще один документ с тем же значением userName
поле или нет:
var keyValueExists = function(key, value) {
var exists = false;
User.count({key: value}, function(err, count) {
if (err) {
console.log(err);
console.log('Problem with `.find` function');
} else {
console.log('count: ' + count);
exists = (count !== 0);
}
});
return exists;
};
Теперь проблема заключается в том, что эта последняя функция никогда не возвращает true
! Например, давайте предположим, что у нас есть этот документ в нашей коллекции:
{
"userName": "user1"
}
(Примечание: это результат выполнения команды Монго оболочки: db.users.find()
)
Когда мы называем эту функцию с этими параметрами: keyValueExists('userName','user1')
возвращает false, но когда вместо 'userName'
I hardcode userName
(без кавычек) это работает!
Почему это происходит? и как я могу избавиться от этого?
Было бы хорошо, если бы вы объяснили, что в противном случае было бы отправляется как '{" key ":" user1 "}', поскольку строит обозначение объекта. Но это правда, что он в основном правильный. –
Другая проблема с этим кодом заключается в том, что он имеет асинхронные вызовы ('count'), которые заставляют его сразу же возвращать' false', не считая результат обратно из mongoDB. –
Спасибо за указание. Я исправил это. –