gpt4 book ai didi

javascript - Mongoose .js CastError : Cast to number failed for value "[object Object]" at path "undefined"

转载 作者:可可西里 更新时间:2023-11-01 02:52:54 25 4
gpt4 key购买 nike

Mongoose.jsnode.js 结合使用。

我有这个架构:

var Photo = new Schema({
URL:String
,description:String
,created_by:{type:ObjectId, ref:'User'}
,created_at:{type:Date, default:Date.now()}
});

var User = new Schema({
name:{type:String,index:true}
,email:{type:String,index:true, unique:true}
});

//Task model
var Task = new Schema({
title:String
,created_by:{type:ObjectId, ref: 'User'}
,created:{type:Date, default:Date.now()}
,responses:[{
type:Number
,user:{type:ObjectId, ref: 'User'}
,comment:String
,avatarURL:String
,photo:{type:ObjectId, ref: 'Photo'}
,created:{type:Date, default:Date.now()}
}]
});

//Group model
var Group = new Schema({
name:String
,tasks:[Task]
});

此代码出错(组正常,idx 处的任务正常,响应为空数组,用户有效,照片有效):

var typePhoto = 6;
var resp = {
type: typePhoto//photo
,user: user._id
,photo: photo._id
};


group.tasks[taskIdx].responses.push(resp); //errors out here

此时我收到以下错误:

/home/admin/notitws/node_modules/mongoose/lib/utils.js:434
throw err;
^
CastError: Cast to number failed for value "[object Object]" at path "undefined"
at SchemaNumber.cast (/home/admin/notitws/node_modules/mongoose/lib/schema/number.js:127:9)
at Array.MongooseArray._cast (/home/admin/notitws/node_modules/mongoose/lib/types/array.js:78:15)
at Object.map (native)
at Array.MongooseArray.push (/home/admin/notitws/node_modules/mongoose/lib/types/array.js:187:23)
at exports.taskAddPhoto (/home/admin/notitws/routes/group.js:1097:35)
at Promise.exports.createPhoto (/home/admin/notitws/routes/photos.js:106:4)
at Promise.addBack (/home/admin/notitws/node_modules/mongoose/lib/promise.js:128:8)
at Promise.EventEmitter.emit (events.js:96:17)
at Promise.emit (/home/admin/notitws/node_modules/mongoose/lib/promise.js:66:38)
at Promise.complete (/home/admin/notitws/node_modules/mongoose/lib/promise.js:77:20)

关于如何解决这个问题或可能导致它的原因有什么想法吗?

PS 不知道这是否重要,但在获取组的调用中我正在填充 tasks.responses.usertasks.responses.photo tasks.created_by.

最佳答案

mongoose 使用“type”关键字来确定字段的类型。 Mongoose 可能认为响应是 Number 类型而不是数组。

尝试:

responses:[{
type: {type: Number}
,user:{type:ObjectId, ref: 'User'}
,comment:String
,avatarURL:String
,photo:{type:ObjectId, ref: 'Photo'}
,created:{type:Date, default:Date.now()}
}]

另一种选择是将您的响应对象包装到模式中:

responses: [Response]

关于javascript - Mongoose .js CastError : Cast to number failed for value "[object Object]" at path "undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com