Mongoose发现不使用ObjectId

时间:2016-08-26 09:47:11

标签: node.js mongodb mongoose

我在userref.js中定义了一个架构

module.exports = (function userref() {

    var Schema = mongoose.Schema;

var newSchema= new Schema([{

        userId: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'User',
            index: true
        },
                value: { type: Number }

    }]);

    var results = mongoose.model('UserRef', newSchema);

    return results;

})();

我已插入一些数据,当我尝试获取某些数据时,我从mongodb控制台获取正确的值

db.getCollection('userrefs').find({'userId':ObjectId('57a48fa57429b91000e224a6')})

正确返回一些数据

现在的问题是,当我尝试通过给出objectId来获取代码中的一些数据时,我得到了空数组。在下面的函数中,userrefs作为空数组返回

//req.params.userId=57a48fa57429b91000e224a6
var UserRef = require('../userref.js');
this.getuserref = function (req, res, next) {

        try {
            var o_userId =mongoose.Types.ObjectId(req.params.userId);
            var query = { userId: o_userId };
            var projection = '_id userId value';

            UserRef.find(query, projection, function (err, usrrefs) {
                if (err) return next(err);
                res.send(usrrefs);
                console.log("userref fetched Properly");
            });
        } catch (err) {
            console.log('Error While Fetching  ' + err);
            return next(err);
        }
    };

此外,当我调试代码时,我可以将o_userId视为objectId,其id值为某个垃圾字符

o_userId: ObjectID
_bsontype: "ObjectID"
id: "W¤¥t)¹â$¦"

2 个答案:

答案 0 :(得分:0)

像这样添加导出

module.exports.modelname= mongoose.model('userrefs', nameofschema, 'userrefs');     

var z = require('../userref.js');

var UserRef  = z.modelname;

现在使用UserRef调用。

只是试试这个男人。

Model.find({ 'userId': objectidvariable}, '_id userid etc', function (err, docs) {
      // docs is an array
    });

从官方文档中复制的参考样本。

答案 1 :(得分:0)

试试这个:

$array1 = array ( 'productcode' => 218133, 'categoryid' => 315, 'color' => 'red' );
$array2 = array (10,220);

$array1['categoryid'] = array_merge((array)$array1['categoryid'], $array2);
print_r($array1);