我有用戶帳戶,按時間到期。時間以毫秒爲單位存儲在MongoDB中。用戶由_id標識。這裏的架構:Node + mongo-native:如何查找和更新集合中的值?
{
"_id": {
"$oid": "506a1438be4f73c11c000002"
},
"email": "admin",
"password": "admin",
"first_name": "admin",
"last_name": "admin",
"country": "USA",
"group": "admin",
"expires": 1349129272918
}
要添加+ N天用戶賬戶,我應該使用find(),然後更新()(不知道爲什麼,但findAndUpdate無法獲得以前的值):
app.post('/users/add', function(req,res){
addDays(req.body.id, req.body.days, function(status){
res.send(200);
})
});
function addDays(id, days, callback) {
var obj_id = BSON.ObjectID.createFromHexString(id);
db.collection("users", function(error, collection) {
collection.find({_id: obj_id}, function(err, user) {
var oldexp = user.expires;
if (oldexp < new Date().getTime()) {
var newexp = new Date().getTime() + (86400000*days);
} else {
var newexp = oldexp + (86400000*days);
}
collection.update({_id: obj_id}, {
$set: {
"expires": parseInt(newexp)
}
}, function(err, result) {
callback('ok');
});
});
});
}
要啓動更新天的功能,我用JS在前臺:
$(".addDays").live("click", function(){
var that = $(this);
var id = that.closest('.row').find('input[name=id]').val();
alert(id);
$.post('/users/add', {
"id": id,
"days": 10
}, function(data){
alert(data);
});
});
瓦爾ID是一個字符串解碼ObejctID(如「506a1438be4f73c11c000002」),對每一位用戶它存儲在最近的輸入(NAME =「ID 「)。
在我嘗試添加日子之後,即使我收到了好評,我的收藏集也已損壞。有誰知道爲什麼?謝謝!
您能否詳細說明「我的收藏已損壞」?究竟發生了什麼? – jmikola
由於您將過期存儲爲數字,爲何不使用$ inc操作符? –
@IlyaRusanen你能解釋你的收藏在這次手術後的樣子嗎?爲什麼你不能使用$ inc? –