Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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.js CastError:value“的数字转换失败”;{&&x27;$gte&&x27;:1}";在路径上“;“访问”;对于“型号”;“项目”;_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Mongoose.js CastError:value“的数字转换失败”;{&&x27;$gte&&x27;:1}";在路径上“;“访问”;对于“型号”;“项目”;

Javascript Mongoose.js CastError:value“的数字转换失败”;{&&x27;$gte&&x27;:1}";在路径上“;“访问”;对于“型号”;“项目”;,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图在一组用户中找到一个用户,这些用户的id与我的令牌中的id相同,访问权限大于1 为此,我使用了以下代码,但我得到了一个CastError: Project.findOne({ Users: {User: decoded._id, access: { $gte: authStatus }}, _id: id }) .then((result) => { console.log(result) }) .catch((

我试图在一组用户中找到一个用户,这些用户的id与我的令牌中的id相同,访问权限大于1

为此,我使用了以下代码,但我得到了一个CastError:

Project.findOne({ Users: {User: decoded._id, access: { $gte: authStatus }}, _id: id })
        .then((result) => {
            console.log(result)
        })
        .catch((err) => {
            console.log(err)
        });
    CastError: Cast to Number failed for value "{ '$gte': 1 }" at path "access" for model "Projekt"
    at model.Query.exec (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:4371:21)
    at model.Query.Query.then (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:4463:15)
    at validateOwner (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\routes\modules\verifyAccess.js:10:5)
    at C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\routes\project.route.js:44:33
    at Layer.handle [as handle_request] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\route.js:137:13)
    at module.exports (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\routes\modules\verifyToken.js:11:3)
    at Layer.handle [as handle_request] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:281:22
    at param (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:354:14)
    at param (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:365:14)
    at Function.process_params (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:410:3)
    at next (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:275:10) {
  messageFormat: undefined,
  stringValue: `"{ '$gte': 1 }"`,
  kind: 'Number',
  value: { '$gte': 1 },
  path: 'access',
  reason: AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:

    assert.ok(!isNaN(val))

      at castNumber (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\cast\number.js:28:10)
      at SchemaNumber.cast (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schema\number.js:382:12)
      at SchemaNumber.SchemaType.applySetters (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schematype.js:1075:12)
      at EmbeddedDocument.$set (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\document.js:1250:20)
      at EmbeddedDocument._handleIndex (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\document.js:1019:14)
      at EmbeddedDocument.$set (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\document.js:960:22)
      at EmbeddedDocument.Document (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\document.js:150:12)
      at EmbeddedDocument [as constructor] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\types\embedded.js:42:12)
      at new EmbeddedDocument (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schema\documentarray.js:115:17)
      at DocumentArrayPath.SchemaArray.castForQuery (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schema\array.js:485:13)
      at DocumentArrayPath.SchemaType.castForQueryWrapper (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schematype.js:1477:20)
      at cast (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\cast.js:274:34)
      at model.Query.Query.cast (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:4772:12)
      at model.Query.Query._castConditions (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:1872:10)
      at model.Query.<anonymous> (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:2129:8)
      at model.Query._wrappedThunk [as _findOne] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\helpers\query\wrapThunk.js:16:8) {
    generatedMessage: true,
    code: 'ERR_ASSERTION',
    actual: false,
    expected: true,
    operator: '=='
  }
}
我的模式:

const ProjectSchema = new Schema(
{
    Users: [
        {
            User: { type: mongoose.Schema.Types.ObjectId, ref: 'usertemps' },
            access: { type: Number, required: true }
        }
    ],
    name: { type: String, required: true },
    deadline: { type: Date, required: true }
},
{
    timestamps: true
}
);
卡斯特罗:

Project.findOne({ Users: {User: decoded._id, access: { $gte: authStatus }}, _id: id })
        .then((result) => {
            console.log(result)
        })
        .catch((err) => {
            console.log(err)
        });
    CastError: Cast to Number failed for value "{ '$gte': 1 }" at path "access" for model "Projekt"
    at model.Query.exec (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:4371:21)
    at model.Query.Query.then (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:4463:15)
    at validateOwner (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\routes\modules\verifyAccess.js:10:5)
    at C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\routes\project.route.js:44:33
    at Layer.handle [as handle_request] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\route.js:137:13)
    at module.exports (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\routes\modules\verifyToken.js:11:3)
    at Layer.handle [as handle_request] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:281:22
    at param (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:354:14)
    at param (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:365:14)
    at Function.process_params (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:410:3)
    at next (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\express\lib\router\index.js:275:10) {
  messageFormat: undefined,
  stringValue: `"{ '$gte': 1 }"`,
  kind: 'Number',
  value: { '$gte': 1 },
  path: 'access',
  reason: AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:

    assert.ok(!isNaN(val))

      at castNumber (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\cast\number.js:28:10)
      at SchemaNumber.cast (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schema\number.js:382:12)
      at SchemaNumber.SchemaType.applySetters (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schematype.js:1075:12)
      at EmbeddedDocument.$set (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\document.js:1250:20)
      at EmbeddedDocument._handleIndex (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\document.js:1019:14)
      at EmbeddedDocument.$set (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\document.js:960:22)
      at EmbeddedDocument.Document (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\document.js:150:12)
      at EmbeddedDocument [as constructor] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\types\embedded.js:42:12)
      at new EmbeddedDocument (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schema\documentarray.js:115:17)
      at DocumentArrayPath.SchemaArray.castForQuery (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schema\array.js:485:13)
      at DocumentArrayPath.SchemaType.castForQueryWrapper (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\schematype.js:1477:20)
      at cast (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\cast.js:274:34)
      at model.Query.Query.cast (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:4772:12)
      at model.Query.Query._castConditions (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:1872:10)
      at model.Query.<anonymous> (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\query.js:2129:8)
      at model.Query._wrappedThunk [as _findOne] (C:\Users\tomod\OneDrive\Dokumenter\GitHub\Project-Manager-Project\node_modules\mongoose\lib\helpers\query\wrapThunk.js:16:8) {
    generatedMessage: true,
    code: 'ERR_ASSERTION',
    actual: false,
    expected: true,
    operator: '=='
  }
}
CastError:model“Projekt”的路径“access”处的值“{'$gte':1}”的数字转换失败
在model.Query.exec(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\Query.js:4371:21)
在model.Query.Query.then(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\Query.js:4463:15)
在validateOwner(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\routes\modules\verifyAccess.js:10:5)
在C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\routes\Project.route.js:44:33
在Layer.handle[作为handle\u请求](C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\Layer.js:95:5)
下一步(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\route.js:137:13)
在module.exports(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\routes\modules\verifyToken.js:11:3)
在Layer.handle[作为handle\u请求](C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\Layer.js:95:5)
下一步(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\route.js:137:13)
在Route.dispatch(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\Route.js:112:3)
在Layer.handle[作为handle\u请求](C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\Layer.js:95:5)
位于C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\index.js:281:22
在参数处(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\index.js:354:14)
在参数处(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\index.js:365:14)
在Function.process_参数处(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\index.js:410:3)
下一步(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\express\lib\router\index.js:275:10){
messageFormat:未定义,
stringValue:`{'$gte':1}`,
种类:'编号',
值:{'$gte':1},
路径:“访问”,
原因:AssertionError[ERR_ASSERTION]:计算为错误值的表达式:
assert.ok(!isNaN(val))
在castNumber(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\cast\number.js:28:10)
在SchemaNumber.cast(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\schema\number.js:382:12)
位于SchemaNumber.SchemaType.applySetters(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\SchemaType.js:1075:12)
位于EmbeddedDocument.$set(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\document.js:1250:20)
位于EmbeddedDocument.\u handleIndex(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\document.js:1019:14)
位于EmbeddedDocument.$set(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\document.js:960:22)
在EmbeddedDocument.Document(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\Document.js:150:12)
在EmbeddedDocument[作为构造函数](C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\types\embedded.js:42:12)
在新的EmbeddedDocument(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\schema\documentarray.js:115:17)中
位于documentaraypath.SchemaArray.castForQuery(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\schema\array.js:485:13)
位于documentaraypath.SchemaType.castforqueryrapper(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\SchemaType.js:1477:20)
at cast(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\cast.js:274:34)
在model.Query.Query.cast(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\Query.js:4772:12)
在model.Query.Query.\u castConditions(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\Query.js:1872:10)
位于model.Query。(C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\u modules\mongoose\lib\Query.js:2129:8)
在model.Query.\u wrappedThunk[as\u findOne](C:\Users\tomod\OneDrive\dokumcenter\GitHub\Project Manager Project\node\modules\mongoose\lib\helpers\Query\wrapThunk.js:16:8){
生成消息:对,
代码:“ERR_断言”,
实际:错误,
预期:对,,
运算符:'='
}
}
这样做可能吗?还是我的做法完全错了


希望有人能帮助您,谢谢您的时间。

要查询嵌套字段,您应该使用

Project.findOne({
“Users.User”:已解码。_id,
“Users.access”:{$gte:authStatus},
_id:id,
})
。然后((结果)=>{
控制台日志(结果);
})
.catch((错误)=>{
控制台日志(err);
});
编辑:

为了过滤数组中的元素并仅返回符合特定条件的元素,可以使用
$filter
运算符

项目