// 举例所用到的数据源:
{
"_id" : ObjectId("5b59bece36de5915645c2208"),
"userName" : "xcs",
"userId" : "12",
"userPwd" : "123",
"orderList" : [ ],
"cartList" : [
{
"productImg" : "mi6.jpg",
"productPrice" : "1000",
"productName" : "小米1",
"productId" : "1003",
"_id" : ObjectId("5b40039e4c24436e05b4150f"),
"productNum" : 6,
"checked" : "1"
},
{
"productImg" : "1.jpg",
"productPrice" : "1200",
"productName" : "小米2",
"productId" : "1004",
"_id" : ObjectId("5b4004174c24436e05b41510"),
"productNum" : 1,
"checked" : "1"
}
],
"addressList" : [ ],
"__v" : 18
}
1.请求参数获取不到。
通过express写的接口,获取参数有三种方法,分别是:query,body,params,
get请求对应query
post请求对应body
看实例:
var express = require('express');
var router = express.Router();
// post:
router.post('/addCart',function (req, res, next) {
var userId = req.body.userId ;
});
// get:
router.get('/addCart',function (req, res, next) {
var userId = req.query.userId ;
});
2.从MongoDB查询返回的数据无法法修改。
首先你要修改的字段,在必须存在于定义的模型里,否则,你是修改不了该字段的值。
// 这是mogoose 定义的一个schame模型
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var productSchema = new Schema({
'productId':Number,
'productName':String,
'productPrice':Number,
'productImg':String,
'productNum':Number,
//'checked':String //这里屏蔽了该字段,若后面通过该模型查询出来的数据,改该字段的值是无法被修改的
});
module.exports = mongoose.model('goods',productSchema);
3.删除文档中的某个字段 update
db.users.update(
<query>, // query : update的查询条件,类似sql update查询内where后面的。
<update>, // update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
{
upsert: <boolean>, // upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi: <boolean>, // multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern: <document> // writeConcern :可选,抛出异常的级别。
}
)
//例如要把User表中address字段删除
db.users.update(
{'userId':'12'},
{
$unset:{'address':''}
},
{ //这里可以简写,看下例
'upsert':true,
'multi':true,
}
)
// 上面的例子 可以简写:
db.users.update(
{'userId':'12'},
{
$unset:{'address':''}
},
true,true //注意顺序,upsert,multi,不要弄乱
)