[英]Save referring documents in mongodb with node.js
我在mongodb中使用以下模式有3个集合:
使用者
var userSchema = new Schema({
email: String,
password: String
});
var User = mongoose.model('User', userSchema);
module.exports = User;
帖子
var postSchema = new Schema({
user_id: {
type: Schema.ObjectId,
ref: 'User'
},
group_id: {
type: Schema.ObjectId,
ref: 'Group'
},
msg: String
});
团体
var groupSchema = new Schema({
name: String
});
如何保存帖子? 我现在正在做的是:
var newPost = new Post();
Group.findOne({"_id":req.body.group}, function(err, group){
if (err) res.json(err);
else {
newPost.msg = req.body.msg;
newPost.user_id = req.user; //from cookie using passport.js
newPost.group_id = group._id;
console.log(newPost);
}
});
我想在Post的方案中从User模式写入User的ID,从Group方案写入Group的ID? 在我看来,我使用SWIG:
<form action="/post_add" method="POST">
<label for="msg">Message:</label><br>
<textarea name="msg" id="msg" cols="30" rows="10"></textarea>
<label>Select group:</label>
<select name="group">
{% for group in groups %}
<option value="{{group.id}}">{{group.name}}</option>
{% endfor %}
</select>
<input type="submit" value="Write!" />
</form>
假设您使用express 4+
和body-parser
作为中间件
var mongoose = require('mongoose');
var Post = mongoose.model('Post');
var express = require('express');
var router = express.Router();
router.post('/post_add', function (req, res, next) {
var body = req.body;
var user = req.user;
var post = new Post({
user_id: user._id,
group_id: body.group,
msg: body.msg
});
post.save(function (err) {
if (err) { // failed
console.error(err);
res.redirect('/error');
} else { // success
res.redirect('/posts');
}
});
});
module.exports = router;
有关其他信息,请访问http://expressjs.com/en/api.html
注意 :您可能需要将{{group.id}}
更改为{{group._id}}
具体取决于将mongodb结果映射到groups
视图数据的方式
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.