最近在学习BYVoid大神的开发指南,有两处代码不是很清楚,希望各位大神指教。 第一处:
Post.prototype.save = function save(callback) {
// 存入 Mongodb 的文档
var post = {
user: this.user,
post: this.post,
time: this.time
};
mongodb.open(function(err, db) {
if(err) {
return callback(err);
}
// 读取 posts 集合
db.collection('posts', function(err, collection) {
if(err) {
mongodb.close();
return callback(err);
}
// 为 user 属性添加索引
collection.ensureIndex('user');
// 写入 post 文档
collection.insert(post, {safe:true}, function(err, post) {
mongodb.close();
callback(err,post);
});
});
});
}
调用的callback有两个参数,可是实现Post.prototype.save的callback并没有两个参数,不知道这个callback到底是调用的什么东西?
第二处:
<% if (user) { %>
<%- partial('say') %>
<% } %>
<%- partial('posts') %>
书上本来说partial这个函数要传两个参数,第一个代表模板,第二个代表对象或数组,可是这里为什么只穿了一个模板名称的参数,在调用时还确实取到了希望取到的posts数据呢。。找了很久没找到partial的文档,希望大神指教
最后谢谢好心的大神~
求解答啊各位大神T^T
光看这些不明白,有代码地址吗?
@IchiNiNiIchi 代码地址在这里: https://github.com/StudentWan/microblog
麻烦了~~~
你的第一个问题, 两个调用的都是同一个 callback, JavaScript 对函数接受的参数不做检查的。第二个的话,调用 partial 时传入的数据优先,但是 partial 可以访问主视图的本地变量。 另外你用的教程版本太低啦,换成置顶的教程学吧。另外 git 设置一下,不要把 node_modules 的文件也传上去了。
@IchiNiNiIchi 謝謝大神🙏。第一個問題我懂了,第二個還是有點迷糊,是說partial在只接受到一個參數時,這個參數首先是數據,然後填充的視圖在本地文件中找嗎?
@StudentWan 第二个就是你可以只传递模板名称,不传递数据。像你在这里可以访问 user 数据,你在 say 跟 posts 模板里面也可以得到 user 的数据。你可以试一下
<% if (user) { %>
<%- partial('say') %>
<% } %>
<%- partial('posts') %>
@IchiNiNiIchi 懂了,谢谢大神!