我已经看了网站上的一些问题,但还没有完全弄清楚我做错了什么。我有一些这样的代码:
var mongoose = require('mongoose'),
db = mongoose.connect('mongodb://localhost/lastfm'),
Schema = mongoose.Schema,
User = new Schema({
nick: String,
hmask: String,
lastfm: String
});
var UserModel = mongoose.model('User', User);
//Register user to mongodb
var reg_handler = function (act) {
// should add a new entry to the db if nick (act.nick) && hmask (act.host)
// aren't already in the db. Otherwise, update the entry that matches nick
// or hostmask with the new lastfm name (act.params)
};
var get_handler = function (act) {
UserModel.find({ nick: act.params }, function (err, users) {
if (err) { console.log(err) };
users.forEach(function (user) {
console.log('url for user is http://url/' + user.lastfm);
});
});
};我不确定我应该在中间做些什么才能让它正确地更新数据库。我已经尝试了相当多的东西,不能撤销来找出我已经尝试过的所有东西。它花了我一晚上的大部分时间,我希望它能工作。
这几乎就是我想要的,我想知道是否有任何方法可以在.update()的conditions部分进行OR运算
var reg_handler = function (act) {
var lfmuser = { nick: act.nick, hmask: act.host, lastfm: act.params };
UserModel.update({ nick: act.nick }, { $set: lfmuser }, { upsert: true }, function(){});
};我会继续摆弄它。
发布于 2012-03-12 11:58:46
var reg_handler = function (act) {
UserModel.update({ $or: [{nick: act.nick}, {hmask: act.host}] }, { $set: { lastfm: act.params } }, { upsert: true }, function(){});
};这就是我想要的,而且只有一行。:D完美!
发布于 2013-09-06 22:18:05
使用'upsert‘选项设置为true的findOneAndUpdate。
发布于 2012-03-12 11:25:09
这个怎么样(还没有测试,但应该可以使用最新的mongoose):
UserModel.findAndModify({nick: act.nick, hmask: act.host}, [], {$set: {lastfm: act.params}}, {}, callback);https://stackoverflow.com/questions/9661081
复制相似问题