在数组 mongoose 中插入元素在 NodeJS 中创建 Object
Posted
技术标签:
【中文标题】在数组 mongoose 中插入元素在 NodeJS 中创建 Object【英文标题】:Inserting elements in array mongoose creates Object in NodeJS 【发布时间】:2015-06-05 17:25:49 【问题描述】:我正在尝试使用 Mongoose 在数组中插入文档。
这是架构:
var user = new mongo.Schema(
_id : Number,
devices:[
device_id : String,
type : String
])
NodeJS 中的更新代码如下:
app.put('/user/update',function(req,res)
var obj = req.body;
users.update(
'user.username' : obj.email,
'user.username' : obj.email,
'user.password' : obj.password,
'user.name.first' : obj.name,
'user.department' : obj.department,
'user.year' : obj.year,
'user.college' : obj.college,
'user.contact.phone': obj.contact,
'user.last_login' : obj.last_login,
$push:
'devices':
device_id: 'sadasd32u4je3bdjas',
type: 'Windows'
, function(err)
if(err)
res.json("foo": String(err));
else
res.json("foo": "Successfully Signed up!");
);
);
但是它插入了类似的东西:
"devices": [
"[object Object]",
"[object Object]",
"[object Object]",
"[object Object]",
"[object Object]"
],
我哪里做错了?再次感谢。
【问题讨论】:
【参考方案1】:使用 findOneAndUpdate()
方法并将 'upsert' 选项设置为 true - 如果对象不存在,则创建对象(默认为 false):
var obj = req.body;
var query = 'user.username': obj.email;
var doc =
$set:
'user.username': obj.email,
'user.password': obj.password,
'user.name.first': obj.name,
'user.department': obj.department,
'user.year': obj.year,
'user.college': obj.college,
'user.contact.phone': obj.contact,
'user.last_login': obj.last_login
,
$push:
'devices':
device_id: 'sadasd32u4je3bdjas',
type: 'Windows'
;
var options = upsert: true;
users.findOneAndUpdate(query, doc, options, function(err)
if(err)
res.json("foo": String(err));
else
res.json("foo": "Successfully Signed up!");
);
【讨论】:
以上是关于在数组 mongoose 中插入元素在 NodeJS 中创建 Object的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Mongoose 在 MongoDB 中插入 JSON 数组
如何使用 mongoose 和 NodeJs 在 Mongodb 的数组字段中插入数据