【发布时间】:2016-02-23 00:42:16
【问题描述】:
我有一个用 mongoose 定义的嵌套模式:
//application.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Category = require('./category.js');
var Application = new Schema({
title : String,
cats : [Category]
});
Application.virtual('app_id').get(function() {
return this._id;
});
module.exports = mongoose.model('Application', Application);
和
//account.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var passportLocalMongoose = require('passport-local-mongoose');
var Application = require('./application.js');
var Account = new Schema({
username: String,
password: String,
apps: [Application]
});
Account.plugin(passportLocalMongoose);
module.exports = mongoose.model('Account', Account);
现在,如果我尝试推送到 apps,它是 account 中的一个数组,如下所示:
app.post('/application', function(req,res){
var name = req.user.username;
var newApp = new Application();
newApp.title = req.body.title;
console.log(newApp);
Account.findOneAndUpdate({username : name},
{$push: {apps: newApp}},
{safe: true, upsert: true},
function(err, model){
if (err){
console.log(model);
console.error("ERROR: ", err);
res.status(500).send(err);
}else{
res.status(200).send({"status":"ok"});
}
}
);
});
我得到错误:
{ title: 'dogs', _id: 564f1d1444f30e0d13e84e7b, cats: [] }
undefined
ERROR: { [CastError: Cast to undefined failed for value "[object Object]" at path "apps"]
message: 'Cast to undefined failed for value "[object Object]" at path "apps"',
name: 'CastError',
type: undefined,
value: [{"title":"dogs","_id":"564f1d1444f30e0d13e84e7b","cats":[]}],
path: 'apps' }
我做错了什么?
编辑:
在question 中找到了答案 实际上我需要导入架构而不是对象
//account.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var passportLocalMongoose = require('passport-local-mongoose');
var ApplicationSchema = require('./application.js').schema; //<-- .schema was added
var Account = new Schema({
username: String,
password: String,
apps: [ApplicationSchema]
});
Account.plugin(passportLocalMongoose);
module.exports = mongoose.model('Account', Account);
【问题讨论】:
标签: node.js mongodb express mongoose