对不起,我的英语不好。
我用的node.js + express.js + mongoose.js 我有这个模式中猫鼬适合群体:
Mongoose更新引用对象?
var groupSchema = new mongoose.Schema({
name: String,
users: [{type: mongoose.Schema.ObjectId, ref: 'User'}],
posts: [{type: mongoose.Schema.ObjectId, ref: 'Post'}]
});
和这个模式给用户:
var userSchema = new mongoose.Schema({
login: { type: String, unique: true, lowercase: true },
password: String,
unread: [{type: mongoose.Schema.ObjectId, ref: 'Post'}]
});
集团的名单与该组相关的用户以及与该组相关的帖子列表。
我想要实现的是:
Group1
有用户Mike
,John
和Jane
;
当用户Mike
创建一个新的职位:
1)我觉得目前的组,然后选择用户,与该组(Group1
和用户Mike
,John
和Jane
);
2)给用户John
和Jane
我必须在unread
字段中设置创建的帖子。 (让这个知道,哪个用户还没有阅读)。
它是正确的吗?如果是的话,我如何更新参考文件中的这个未读字段?
我试着这样做:
在例如:组网址:http://localhost:3000/group/first
app.get('/group/:name', groups.getGroupPage);
app.post('/group/:name', posts.postCreate);
Posts.js
var Group = require('../models/group');
var User = require('../models/user');
var Post = require('../models/post');
exports.postCreate = function(req, res) {
var post = new Post({
title: req.body.p_title,
content: req.body.p_content,
author: req.user
});
Group
.update({ name: req.params.name }, {upsert:true}, { "$push": { "users.$.unread": post._id } })
.populate('users')
.exec(function(err,group) {
if (err) res.json(err)
console.log(group);
}
);
}
感谢的任何帮助。
请发表您自己试过的代码。我们需要更多信息来帮助您。你使用快递吗?如果是,那么您使用的路线是什么?你要求什么信息发送到快递?你是否发送了带有请求的用户名或用户ID? – Snekw
增加了更多的代码,谢谢你的 – Ramil