Javascript Mongoose-Foregin密钥映射
我是MongoDB/Mongoose的新手,正在尝试找出如何映射模式之间的关系。我认为问题不在于.populate()。在创建新用户和客户端时,我看不到集合中反映的关系 用户(通过本地/社交登录)有许多客户端。 一组客户端属于1个用户Javascript Mongoose-Foregin密钥映射,javascript,angularjs,node.js,mongodb,nodes,Javascript,Angularjs,Node.js,Mongodb,Nodes,我是MongoDB/Mongoose的新手,正在尝试找出如何映射模式之间的关系。我认为问题不在于.populate()。在创建新用户和客户端时,我看不到集合中反映的关系 用户(通过本地/社交登录)有许多客户端。 一组客户端属于1个用户 这是声明外键的正确方法吗?{type:Schema.Types.ObjectId,ref:'Client'} 两个模式是否都应该具有彼此的外键以相互关联 在创建用户/客户端时,是否需要其他代码才能显示外键中的数据?我读了一些关于populate()的文章 使用者
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var clientSchema = new Schema({
id: String,
firstname: String,
lastname: String,
mobile: String,
user: {type: Schema.Types.ObjectId, ref: 'User'}
});
module.exports = mongoose.model('Client', clientSchema);
创建用户
app.post("/api/user", function (req, res) {
const user = req.body;
console.log(user);
User.findOne({ 'local.email': user.email },
function (err, result) {
if (err) {
console.log(err);
handleError(err, res);
return;
}
if (result) {
res.status(500).send("Email already exists in database");
} else {
var newUser = new User();
newUser.local.password = generateHash(user.password);
newUser.local.email = user.email;
newUser.local.name = user.name;
newUser.local.mobile = user.mobile;
newUser.save(function (err, result) {
res.status(201).send("User added to database");
});
}
});
});
创建客户端
app.post("/api/client", function (req, res) {
const client = req.body;
console.log(client);
Client.findOne({
$and: [
{ firstname: client.firstname },
{ lastname: client.lastname }
]
},
function (err, result) {
if (err) {
console.log(err);
handleError(err, res);
return;
}
if (result) {
res.status(500).send({msg:"Client already exists in database"});
} else {
var newClient = new Client();
newClient.firstname = client.firstname;
newClient.lastname = client.lastname;
newClient.mobile = client.mobile;
newClient.save(function (err, result) {
res.status(201).send("Client added to database");
});
}
});
});
谢意@shivshankar的可能副本。我已经看到了这个问题,还有更多的问题,但因为我在stackoverflow上没有收集到足够的积分,所以我不能添加评论来问更多的问题。对于我来说,在创建阶段,用户集合没有客户端数据,所以我的问题不是。populate()我想…好吧,从我的帐户中获得一些信任@@shivshankar!我刚试过,看起来我需要50的声誉。呃,还没有。无论如何,问题是关于查找数据,但我的问题是关于保存数据,这是不同的
app.post("/api/client", function (req, res) {
const client = req.body;
console.log(client);
Client.findOne({
$and: [
{ firstname: client.firstname },
{ lastname: client.lastname }
]
},
function (err, result) {
if (err) {
console.log(err);
handleError(err, res);
return;
}
if (result) {
res.status(500).send({msg:"Client already exists in database"});
} else {
var newClient = new Client();
newClient.firstname = client.firstname;
newClient.lastname = client.lastname;
newClient.mobile = client.mobile;
newClient.save(function (err, result) {
res.status(201).send("Client added to database");
});
}
});
});