我已经查看了网站上的一些问题,但还没有弄清楚我在做什么错。我有一些这样的代码:
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()
.update()
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(){}); };
我会继续玩弄它。
var reg_handler = function (act) { UserModel.update({ $or: [{nick: act.nick}, {hmask: act.host}] }, { $set: { lastfm: act.params } }, { upsert: true }, function(){}); };
这正是我想要的,只有一行。:D完美!