我是Mongoose和Node.js的新手,我有2个架构。一个是客户,另一个是项目。用户可以创建一个新项目(给它一个项目名称),用户可以创建一个新客户端(给它一个客户端名称),但用户可以选择将一个客户端添加到项目中,并可以将项目添加到客户端。
我想要做的是,当您执行POST请求时,您可以输入项目名称和客户端名称。然后,客户端名称应该进入客户端模式并投影到项目模式中,但我不确定一个模式如何引用另一个模式。
这是我的客户端架构
var mongoose = require('mongoose');
var Project = require('./project_models');
var Schema = mongoose.Schema;
//
var clientSchema = Schema({
project: { type: Schema.Types.ObjectId, ref: 'Project' },
client: String
});
module.exports = mongoose.model('Client', clientSchema);
第二个是项目
var mongoose = require('mongoose');
var Client = require('./client_models');
var Schema = mongoose.Schema;
//
var projectSchema = Schema({
client: { type: Schema.Types.ObjectId, ref: 'Client' },
project: String
});
module.exports = mongoose.model('Project', projectSchema);
这是我的帖子功能(如果我只插入一个项目标题,它就可以使用,与客户端相同)
app.post('/project', function(req, res, next) {
var newProject = new Project(req.body);
newProject.save(function(err, project) {
if (err) { return next(err); }
return res.json(project);
});
On Postman在执行POST请求时,这就是我输入的内容 localhost3000:/项目
{
"client":"john",
"project":"db"
}
我收到此错误
" message":"强制转换为ObjectID失败\" john \"在路径\"客户端\"",
由于
答案 0 :(得分:0)
您必须先创建名为“db”的项目,然后将其保存并添加到您的用户,然后保存您的用户,并且您不应该在两种模型中建立关系。
或者相同但项目为“主要模型”取决于您对它的使用