无法通过声明的 mongoosejs 模式保存 JSON
unable to save JSON through declared mongoosejs schema
我是 nodejs 和猫鼬的新手。猫鼬模式声明有问题。
我声明了一个架构如下:
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)
请告诉我我在做什么wrong.I 用谷歌搜索但找不到任何帮助我理解我的代码有什么问题的东西。
提前致谢!!!
要将数据作为 JSON 到 new routes(...)
的字符串提供,您必须先解析它:
var allroutes = new routes(JSON.parse('{"mode": []}'));
routes()
实现的 Model
constructor 需要 JavaScript Object
作为其参数,而不是 JSON.[=20= 的字符串]
Parameters:
doc
<Object> values with which to create the document
您还可以从参数中删除周围的引号,以使用 initializers 定义 JavaScript 对象和数组(JSON 从中获得了一些语法):
var allroutes = new routes({"mode": []});
我创建了这段代码(你的精简版)并且可以通过以下方式调用它:node test.js
test.js
#!/bin/env node
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
var smode = new Schema({ name: String });
var routes = mongoose.model('route', smode);
var allroutes = new routes({ name: 'My first route' });
allroutes.save(function (err) {
if (err) return handleError(err);
routes.findById(allroutes, function (err, doc) {
if (err) return handleError(err);
console.log(doc);
})
})
您可以尝试一次一步地尝试将其构建回您之前的状态,或者至少验证您的语法。请注意,在该行 "var allroutes..." 中,单词名称未被引号括起来,例如。
我是 nodejs 和猫鼬的新手。猫鼬模式声明有问题。
我声明了一个架构如下:
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)
请告诉我我在做什么wrong.I 用谷歌搜索但找不到任何帮助我理解我的代码有什么问题的东西。
提前致谢!!!
要将数据作为 JSON 到 new routes(...)
的字符串提供,您必须先解析它:
var allroutes = new routes(JSON.parse('{"mode": []}'));
routes()
实现的 Model
constructor 需要 JavaScript Object
作为其参数,而不是 JSON.[=20= 的字符串]
Parameters:
doc
<Object> values with which to create the document
您还可以从参数中删除周围的引号,以使用 initializers 定义 JavaScript 对象和数组(JSON 从中获得了一些语法):
var allroutes = new routes({"mode": []});
我创建了这段代码(你的精简版)并且可以通过以下方式调用它:node test.js
test.js
#!/bin/env node
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
var smode = new Schema({ name: String });
var routes = mongoose.model('route', smode);
var allroutes = new routes({ name: 'My first route' });
allroutes.save(function (err) {
if (err) return handleError(err);
routes.findById(allroutes, function (err, doc) {
if (err) return handleError(err);
console.log(doc);
})
})
您可以尝试一次一步地尝试将其构建回您之前的状态,或者至少验证您的语法。请注意,在该行 "var allroutes..." 中,单词名称未被引号括起来,例如。