我正在学习node.js,我正在试图弄清楚如何将用户添加到我的架构中的子阵列。我基本上是在做一个twitter-clone,以了解节点是如何工作的。
这是我的UserSchema。我想将用户添加到“follow”字段数组中。
#Usermodel.js
var UserSchema = mongoose.Schema({
username: {
type: String,
index:true
},
password: {
type: String
},
email: {
type: String
},
name: {
type: String
},
facebook : {
id : String,
token : String
},
resetPasswordToken: {type: String},
resetPasswordExpires: {type: Date},
following: [{type: mongoose.Schema.Types.ObjectId, ref: 'User'}], <-- I want to add users here
posts : [{ type: mongoose.Schema.Types.ObjectId, ref: 'Post' }]
});
UserSchema.index({username: 'text'});
var User = module.exports = mongoose.model('User', UserSchema);
在此文件中,您将找到用于将用户添加到“以下”子阵列中的架构方法:
#Usermodel.js
module.exports.addFollowers = function (req, res, next){
User.findOneAndUpdate({_id: req.user._id}, {$push: {following: req.body.id}})
};
我正在查询路由以调用我的架构函数。它看起来像这样:
#routes.js
router.get('/follow', User.addFollowers);
在我的ejs前端,我尝试通过向我的路线发送GET请求来调用我的架构函数:
#index.ejs
<ul>
<%results.forEach(function(element){%> <-- Here I'm looping over users
<% if(user.id != element.id) { %> <-- Not show if it is myself
<li>
<%=element.username%></a> <br>
<form action="/follow" method="GET"> <-- Call route form
<input type="hidden" name="id" value=<%=element._id%>>
<button type="submit">Follow</button> <-- Submit GET
</form>
</li>
<% } %>
<br>
<%});%>
</ul>
不知道该怎么做。当我按下“关注”按钮时,我的网站会继续加载。无法在stackoverflow上找到任何可以帮助我在这个阶段更多的帖子。
谁知道什么是错的?这是正确的方法吗?答案 0 :(得分:1)
在#Usermodel.js
中进行一些更改
module.exports.addFollowers = function (req, res, next){
User.findOneAndUpdate({_id: req.user._id}, {$push: {following: req.body.id}}, next)
};
试试这段代码。