Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新时的Mongoose CastError_Javascript_Mongodb_Mongoose - Fatal编程技术网

Javascript 更新时的Mongoose CastError

Javascript 更新时的Mongoose CastError,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我有一个模型User.js,定义如下: var mongoose= require('mongoose'), Schema = mongoose.Schema, UserSchema = new Schema({ name: String, activeConnections: [{type: Schema.Types.ObjectId, ref: 'Room'}] }); module.exports = mongoose.model('

我有一个模型User.js,定义如下:

var mongoose= require('mongoose'),
    Schema = mongoose.Schema,
    UserSchema = new Schema({
        name: String,
        activeConnections: [{type: Schema.Types.ObjectId, ref: 'Room'}]
    });
module.exports = mongoose.model('User', UserSchema);
Room参考是另一个文件Room.js中的另一个模型,但我认为这里没有必要

我的问题是,当我试图更新activeConnections时,我有一个CastError,它说:对于路径activeConnection处的值“1”,强制转换到ObjectId失败

请注意,在我进行更新时,activeConnections应该是一个空数组

有人能帮我解决这个问题吗

更新:

更新操作发生在以下控制器中

var User = require('../models/User');
User.findById(#validObjectId).exec(function(err,      result) {
    var array = [#validObjectId, #validObjectId];
    var activeConnections = result.activeConnections.push(activeConnections);
    User.findByIdAndUpdate(#validObjectId, {'activeConnections': activeConnections}).exec(function(err, user) {
        if(err) return console.log(err);
        else
            //do something;
    });
})

似乎
activeConnections
并不像您想象的那么空,并且不包含objectid。问题不可能是现有内容,因为“强制转换错误”实际上没有看到数组中的现有内容,除非您实际检索它。因此,更可能的情况是,您试图推送到数组中的值实际上不是
ObjectId
。当然,没有人能在看不到你在做什么的情况下确切地说出来。问题中完全没有您试图“更新”的实际代码。
var-activeConnections=result.activeConnections.push(activeConnections)正在使用
activeConnections
,而它仍然
未定义。我想你的意思是推动
数组
?无论如何,您应该在这里使用
$push
update操作符将元素添加到
activeConnections
中,而不是直接操作数组。