无法通过声明的mongoosejs架构保存JSON(unable to save JSON through declared mongoosejs schema)
我是nodejs和mongoose的新手。 有mongoose架构声明的问题。
我声明了一个架构如下:
var srouteDetails = new Schema({route_id:String, route_name:String}); var srouteTypes = new Schema({route_type:String, mode_name:String, route:[srouteDetails]}); var smode = new Schema({mode:[srouteTypes]});
JSON我想保存:
{"mode": [ "route_type":"4", "mode_name":"Boat", "route": [ {"route_id":"Boat-F4","route_name":"Charlestown Ferry"}, {"route_id":"Boat-F1","route_name":"Hingham Ferry"}, {"route_id":"Boat-F3","route_name":"Hull Ferry"} ] ] }
整个计划:
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var srouteDetails = new Schema({route_id:String, route_name:String}); var srouteTypes = new Schema({route_type:String, mode_name:String, route:[srouteDetails]}); var smode = new Schema({mode:[srouteTypes]}); mongoose.connect('mongodb://localhost/test'); var routes = mongoose.model('route',smode); var allroutes = new routes('{"mode": [{"route_type": "4","mode_name": "Boat","route": [{"route_id": "Boat-F4","route_name": "Charlestown Ferry"},{"route_id": "Boat-F1","route_name": "Hingham Ferry"},{"route_id": "Boat-F3","route_name": "Hull Ferry"}]}]}'); allroutes.save(function(err){ if(err) throw err; console.log("Saved"); });
错误:
/Workspace_Js/jsontest/node_modules/mongoose/lib/document.js:158 if (obj && '_id' in obj) continue; ^ TypeError: Cannot use 'in' operator to search for '_id' in {"mode": [{"route_type": "4","mode_name": "Boat","route": [{"route_id": "Boat-F4","route_name": "Charlestown Ferry"},{"route_id": "Boat-F1","route_name": "Hingham Ferry"},{"route_id": "Boat-F3","route_name": "Hull Ferry"}]}]} at model.Document.$__buildDoc (/Users/Sravan/Workspace_Js/jsontest/node_modules/mongoose/lib/document.js:158:27) at model.Document (/Users/Sravan/Workspace_Js/jsontest/node_modules/mongoose/lib/document.js:57:20) at model.Model (/Users/Sravan/Workspace_Js/jsontest/node_modules/mongoose/lib/model.js:43:12) at new model (/Users/Sravan/Workspace_Js/jsontest/node_modules/mongoose/lib/model.js:2536:11) at Object.<anonymous> (/Users/Sravan/Workspace_Js/jsontest/index.js:12:17) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10)
请让我知道我做错了什么。我用谷歌搜索,无法找到任何帮助我理解我的代码错误的内容。
提前致谢!!!
I am new to nodejs and mongoose. Have issue with mongoose schema declaration.
I declared a schema as below:
var srouteDetails = new Schema({route_id:String, route_name:String}); var srouteTypes = new Schema({route_type:String, mode_name:String, route:[srouteDetails]}); var smode = new Schema({mode:[srouteTypes]});
JSON I am trying to save:
{"mode": [ "route_type":"4", "mode_name":"Boat", "route": [ {"route_id":"Boat-F4","route_name":"Charlestown Ferry"}, {"route_id":"Boat-F1","route_name":"Hingham Ferry"}, {"route_id":"Boat-F3","route_name":"Hull Ferry"} ] ] }
Whole program:
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var srouteDetails = new Schema({route_id:String, route_name:String}); var srouteTypes = new Schema({route_type:String, mode_name:String, route:[srouteDetails]}); var smode = new Schema({mode:[srouteTypes]}); mongoose.connect('mongodb://localhost/test'); var routes = mongoose.model('route',smode); var allroutes = new routes('{"mode": [{"route_type": "4","mode_name": "Boat","route": [{"route_id": "Boat-F4","route_name": "Charlestown Ferry"},{"route_id": "Boat-F1","route_name": "Hingham Ferry"},{"route_id": "Boat-F3","route_name": "Hull Ferry"}]}]}'); allroutes.save(function(err){ if(err) throw err; console.log("Saved"); });
ERROR:
/Workspace_Js/jsontest/node_modules/mongoose/lib/document.js:158 if (obj && '_id' in obj) continue; ^ TypeError: Cannot use 'in' operator to search for '_id' in {"mode": [{"route_type": "4","mode_name": "Boat","route": [{"route_id": "Boat-F4","route_name": "Charlestown Ferry"},{"route_id": "Boat-F1","route_name": "Hingham Ferry"},{"route_id": "Boat-F3","route_name": "Hull Ferry"}]}]} at model.Document.$__buildDoc (/Users/Sravan/Workspace_Js/jsontest/node_modules/mongoose/lib/document.js:158:27) at model.Document (/Users/Sravan/Workspace_Js/jsontest/node_modules/mongoose/lib/document.js:57:20) at model.Model (/Users/Sravan/Workspace_Js/jsontest/node_modules/mongoose/lib/model.js:43:12) at new model (/Users/Sravan/Workspace_Js/jsontest/node_modules/mongoose/lib/model.js:2536:11) at Object.<anonymous> (/Users/Sravan/Workspace_Js/jsontest/index.js:12:17) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10)
Please let me know what I am doing wrong.I googled and cant find anything that helped me understand whats wrong with my code.
Thanks in advance!!!
原文:https://stackoverflow.com/questions/29336194
最满意答案
我想你只需要添加一些括号以及不使用别名和实际的表名:
query = "SELECT L1.[Supervisor ID] AS N0, L1.[Emplid] AS N1, L2.[Emplid] AS N2, L3.[Emplid] AS N3, " & _ "L4.[Emplid] AS N4, L5.[Emplid] AS N5, L6.[Emplid] AS N6, L7.[Emplid] AS N7 FROM ((((([DEU1$] L1 " & _ "LEFT JOIN [DEU1$] L2 ON L1.[Emplid] = L2.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L3 ON L2.[Emplid] = L3.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L4 ON L3.[Emplid] = L4.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L5 ON L4.[Emplid] = L5.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L6 ON L5.[Emplid] = L6.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L7 ON L6.[Emplid]=L7.[Supervisor ID];"
I think you just need to add some parentheses as well as not using both the alias name and the actual table name:
query = "SELECT L1.[Supervisor ID] AS N0, L1.[Emplid] AS N1, L2.[Emplid] AS N2, L3.[Emplid] AS N3, " & _ "L4.[Emplid] AS N4, L5.[Emplid] AS N5, L6.[Emplid] AS N6, L7.[Emplid] AS N7 FROM ((((([DEU1$] L1 " & _ "LEFT JOIN [DEU1$] L2 ON L1.[Emplid] = L2.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L3 ON L2.[Emplid] = L3.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L4 ON L3.[Emplid] = L4.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L5 ON L4.[Emplid] = L5.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L6 ON L5.[Emplid] = L6.[Supervisor ID]) " & _ "LEFT JOIN [DEU1$] L7 ON L6.[Emplid]=L7.[Supervisor ID];"
相关问答
更多-
我猜你需要在日期时间 引号 散列: String sql = "Select * From Requests WHERE Request_Data = #12/15/2010 12:00:00 AM# AND User_ID = '1'"; I'm guessing you need quotes hashes around the datetime: String sql = "Select * From Requests WHERE Request_Data = #12/15/2010 12:00:00 ...
-
Access不使用此语法。 大多数情况下,您可以通过隐式转换逃脱。 如果你确实需要指定CDec()使用C函数 : CInt() , CLng() , CDbl , CDec() , CCur() 最接近你想要的是CByte,但这只是从0到255,这是很小的。 您可以尝试这样的方法并在查询中使用它。 Access没有短路逻辑,因此如果您想避免错误,则需要使用VBA Public Function ConverToPositiveInteger(str As String) As Variant On ...
-
我终于发现你在'FROM'子句中缺少()...尝试以下操作: 顺便说一下,'数字'不需要括在括号内(尽管它是一个保留字) SELECT Sample.Number, Sample.SampleDate, BOD.BOD_Concentration_IN, BOD.BOD_Concentration_OUT, TSS.TSS_Influent, TSS.TSS_Effluent FROM (SampleInformation AS Sample INNER JOIN BOD_Data AS ...
-
我想你只需要添加一些括号以及不使用别名和实际的表名: query = "SELECT L1.[Supervisor ID] AS N0, L1.[Emplid] AS N1, L2.[Emplid] AS N2, L3.[Emplid] AS N3, " & _ "L4.[Emplid] AS N4, L5.[Emplid] AS N5, L6.[Emplid] AS N6, L7.[Emplid] AS N7 FROM ((((([DEU1$] L1 " & _ "LEFT ...
-
问题是您的表名称包含空格,因此查询解析器/引擎将其视为两个不同的文字名称。 你应该使用[]来逃避它们。 另外,请注意我使用表别名( am , cp , ae )以便于阅读。 您的查询应该是这样的 SELECT am.* FROM [Archivo Maestro] am INNER JOIN [Concepto Presupuestal] cp ON am.ID = cp.ID INNER JOIN [asunto_estrategico] ae ON am.ID = ae.ID; Problem is ...
-
语法错误缺少运算符VBA(Syntax Error Missing Operator VBA)[2022-03-02]
如果ProjNo是数字,则正确的代码是: Countboxes = DLookup("Expr1", "qryCountUntoggled", "[ProjNo] =" & Me.ProjNo ) 如果ProjNo是文本,则代码应为: Countboxes = DLookup("Expr1", "qryCountUntoggled", "[ProjNo] ='" & Me.ProjNo & "'") If ProjNo is numeric, the correct code is: Countboxe ... -
MS Access需要在连接周围添加额外的括号,因此这可能有效: SELECT dbo_job.item, sub2.item AS NewCheck FROM (dbo_job LEFT JOIN (SELECT dbo_job.item FROM dbo_job WHERE dbo_job.job_date<=#7/13/2015# AND dbo_job.job_date>=#6/22/2015# GROUP BY dbo_job.item ...
-
您的列名称中包含空格。 将列名包装在方括号中,然后看看你如何去: SELECT alumni.[ID NO], alumni.[LAST NAME], alumni.[GIVEN NAME_MI], alumni.[COURSE], courses.[CollegeID], office365alumni.[EmailAddress], office365alumni.[ContactNumber] FROM (alumni ...
-
正如您所发现的,Access SQL不支持表单的查询 SELECT x, DISTINCT y FROM z 如果您还没有这样做,请尝试 SELECT DISTINCT [Exhibit Recording].ReferenceNo, [Exhibit Recording].AOM FROM [Exhibit Recording]; (请注意,DISTINCT紧跟在SELECT之后.Access SQL支持整个查询中的DISTINCT,但不支持单个列。) 如果这不能为[AOM]提供明确的值,并且您确实需 ...
-
您可能需要在值之前和之后使用撇号。 请尝试以下代码 strSQL = "SELECT tblFICL.Email " _ & " FROM tblFICL " _ & " WHERE tblFICL.Product = '" & prdct & "' AND tblFICL.Broker_Code = '" & bkr & "'" You may need apostrophes before and after your values. Try code below strSQL = " ...