我正在使用Mongoose在Node js上登录Facebook。我在更新数据时遇到问题。
这是我的Scheme文件
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// Schema
var RegSchema = mongoose.Schema({
UserName: String,
UserEmail: String,
userprofileImage : String,
userId: String,
reg_time : {
type : Date, default: Date.now
}
}, { collection: 'user' });
// Model
module.exports = mongoose.model('UserReg', RegSchema);
这是我的主要文件,其中放置了更新和插入(如果没有找到)
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
var UserReg = require('./myschema.js');
module.exports = function(userdetail, callback){
var bb;
var UserAdd = new UserReg({
"UserName": userdetail.username,
"UserEmail": userdetail.useremail,
"userId": userdetail.userId,
"userprofileImage": userdetail.userprofileImage
});
var userdetailchange = {
"UserName": userdetail.username,
"UserEmail": userdetail.useremail,
"userId": userdetail.userId,
"userprofileImage": userdetail.userprofileImage
};
// Update if found otherwise Insert
UserAdd.update({"userId":userdetail.userId },{ $set:userdetailchange, $setOnInsert:userdetailchange ,upsert:true, new: true, setDefaultsOnInsert: true}, function (err, data) {
if (err) {
callback(err);
}
callback(data);
});
};
现在它继续在集合中插入用户数据,只有1个字段是userId,也是默认的_id字段。如果找到匹配项,请帮我更新整个数据或在Collection中插入整个数据。任何帮助将受到高度赞赏。
答案 0 :(得分:1)
upsert
,new
和setDefaultsOnInsert
是选项,需要在单独的第三个参数中传递给update
(记录为here):< / p>
UserReg.update({
"userId" : userdetail.userId // query document
}, {
$set : userdetailchange, // update document
$setOnInsert : userdetailchange
}, {
upsert : true, // options
new : true,
setDefaultsOnInsert : true
}, function (err, data) {
...
});