添加到猫鼬嵌套文件
问题描述:
我试图建立一个嵌套的猫鼬文档这样:
型号/ data.js添加到猫鼬嵌套文件
var mongoose = require('mongoose');
var addresses = new mongoose.Schema({
"street": String,
"city": String,
"state": String,
"zip": Number,
});
var recipes = new mongoose.Schema({
"recipe1": String,
"recipe2": String,
"recipe3": String,
"recipe4": String,
"recipe5": String,
});
var home = new mongoose.Schema({
"name": String,
"image": String,
"recipe": [recipes],
});
var away = new mongoose.Schema({
"name": String,
"image": String,
"recipe": [recipes],
"address": [addresses],
});
var foods = new mongoose.Schema({
"home": [home],
"away": [away],
});
var users = new mongoose.Schema({
"username": String,
"firstname": String,
"lastname": String,
"email": String,
"password": String,
"address": [addresses],
});
var data = new mongoose.Schema({
"users": [users],
"foods": [foods],
});
exports.Data = mongoose.model('data', data);
add.js
var data = require('../models/data.js');
exports.update = function(req, res){
// create a user in a Room
var data = new data.Data();
data.users.push({ username: 'Joe' });
data.save(function (err) {
if (!err) console.log('Success!');
});
};
什么我想do是将一个名称添加到嵌套文档中。但是,当我运行该程序,并从客户端(jQuery Mobile的)提交我的形式,我得到一个错误,指出:
TypeError: Cannot read property 'Data' of undefined
at exports.update (..\routes\add.js:5:20)
at callbacks (..\node_modules\express\lib\router\index.js:164:37)
at param (..\node_modules\express\lib\router\index.js:138:11)
at pass (..\node_modules\express\lib\router\index.js:145:5)
at Router._dispatch (..\node_modules\express\lib\router\index.js:173:5)
at Object.router (..\node_modules\express\lib\router\index.js:33:10)
at next (..\node_modules\express\node_modules\connect\lib\proto.js:174:15)
at Immediate.<anonymous> (..\node_modules\express\node_modules\connect\node_modules\express-session\index.js:433:7)
at Immediate.immediate._onImmediate (timers.js:440:18)
at processImmediate [as _immediateCallback] (timers.js:383:17)
我想知道我在做什么错。谢谢!
答
在您的add.js
文件中,您将覆盖外部范围中的data
变量并使其无法访问。
下面是该问题的一个简单的例子:
var data = { x: 1 } // define data in an outer scope
function foo() {
// the next line overwrites the outer scope data var, causing an error
var data = data.x
console.write(data)
}
foo()
要解决该问题,请更新app.js
文件看起来像这样:
var Data = require('../models/data.js').Data;
exports.update = function(req, res){
// create a user in a Room
var data = new Data();
data.users.push({ username: 'Joe' });
data.save(function (err) {
if (!err) console.log('Success!');
});
};
它的工作!太感谢了!! – mertwo