Mongoose 遇到的问题总结
1. mongoose findById返回为空
代码如下:
Product.findById(productID, function(err, product){});
null
解决方法:
1.开启debug模式,可以看到完整的执行过程
var mongoose = require('mongoose').set('debug', true);
2.执行的
Mongoose: products.findOne({ _id: ObjectId("58afa81477f96288adbd6a95") }, { fields: undefined })
2. mongoose 返回数据库集合方法
mongoose.connection.db.listCollections().toArray(function(err, names) {
if (err) {
console.log(err);
}
else {
names.forEach(function(e,i,a) {
mongoose.connection.db.dropCollection(e.name);
console.log("--->>", e.name);
});
}
});
3. mongoose 直接操作已经存在的集合(没有设置Scheme)
function find (collec, query, callback) {
mongoose.connection.db.collection(collec, function (err, collection) {
collection.find(query).toArray(callback);
});
}
simply do find(collection_name, query, callback); to be given the result.
find('foo', {a : 1}, function (err, docs) {
console.dir(docs);
});
//output: [ { _id: 4e22118fb83406f66a159da5, a: 1 } ]
4. update 参数为空, 穿不进值
router.get('/test', function(req, res, next){
var conditions = {"Prodects.id": "2"},
update = {'$inc': {"Prodects.$.price": 1}},
options = {upsert:true};
CartModel.update(conditions, update, options, function(err) {
});
});
终端打印结果:
{ '$inc': { 'Prodects.$.price': 1 } }
Mongoose: carts.update({ 'Prodects.id': '2' }, { '$inc': {}, '$setOnInsert': { __v: 0 } }, { upsert: true })
但无法传入update 参数中, 结果为'$inc': {}
解决:
万般无奈,Google了, stackoverflow了, github issue提问了, 但是, 不知道咋整, 后来,当尝试过find, insert时出现问题,
CartModel.inset({"key": "value"}, function(err) {
});
报错!!!!
这个找到的答案是model.collection.insert()
;
抱着死马当活马医的态度试了一下, 终端终于显示出想要的结果了,
var Model = require('../models/model');
router.get('/test', function(req, res, next){
var conditions = {"Products.name": "mongodb"},
update = {'$inc': {"Products.$.price": 100}};
Model.collection.update(conditions, update, function(err, result){
res.send(result)
});
});
终端
carts.update({ 'Products.name': 'mongodb' }, { '$inc': { 'Products.$.price': 100 } })
还问了问国外友人-_-Update can not set The second parameter #5067
PERFECT
参考:
findbyid为null
listCollections
How to access a preexisting collection with Mongoose?
更多精彩内容请关注“IT实战联盟”哦~~~
IT实战联盟.jpg
网友评论