Node.js 连接mongodb、主干网、grunt任务和;赫罗库
我已经创建了我的应用程序的基本前端结构,并将其设置为部署到Heroku。我遵循了heroku入门教程(使用node.js),一切似乎都很好,因为我可以看到它在本地主机上运行,也可以在线运行。我还使用express驱动程序成功安装了MongoDB,并从根目录下的index.js文件连接到它。我可以从git bash终端中的控制台日志中看到此连接成功 我的主干应用程序位于根目录下一个名为“Public”的文件夹中,Grunt将其缩小为一个文件,然后放入根目录下一个名为“lib”的文件夹中 我想知道如何从主干视图中访问数据库 我遵循这个例子: 但是我没有看到index.js和主干视图之间的联系以及它们之间的交互方式。我还不知道/cats json文件在哪里 我的文件夹结构如下所示:Node.js 连接mongodb、主干网、grunt任务和;赫罗库,node.js,mongodb,backbone.js,gruntjs,Node.js,Mongodb,Backbone.js,Gruntjs,我已经创建了我的应用程序的基本前端结构,并将其设置为部署到Heroku。我遵循了heroku入门教程(使用node.js),一切似乎都很好,因为我可以看到它在本地主机上运行,也可以在线运行。我还使用express驱动程序成功安装了MongoDB,并从根目录下的index.js文件连接到它。我可以从git bash终端中的控制台日志中看到此连接成功 我的主干应用程序位于根目录下一个名为“Public”的文件夹中,Grunt将其缩小为一个文件,然后放入根目录下一个名为“lib”的文件夹中 我想知道如
public
--css
--fonts
--img
--js
--lib
--scss
lib
--minified-javascript-app.js
index.js
Gruntfile.js
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
console.log("mongoose: connected");
});
var myDbSchema = mongoose.Schema({
name: String
});
myDbSchema.methods.logName = function () {
var name = this.name
? "The name of the site is " + this.name
: "This one don't have a name"
console.log(name);
}
Cats = mongoose.model('Cats', myDbSchema);
var dublinCat = new Cats({ name: 'Catty1' });
console.log(dublinCat.name);
var londonCat = new Cats({ name: 'Catty1' });
londonCat.logName();
londonCat.save(function (err, cats) {
if (err) return console.error(err);
console.log("All sites: ",cats);
});
//end of mongoos db stuff
app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
app.get('/', function(request, response) {
response.send('Hello World!');
});
app.listen(app.get('port'), function() {
console.log("Node app is running at localhost:" + app.get('port'));
});
我的index.js文件如下所示:
public
--css
--fonts
--img
--js
--lib
--scss
lib
--minified-javascript-app.js
index.js
Gruntfile.js
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
console.log("mongoose: connected");
});
var myDbSchema = mongoose.Schema({
name: String
});
myDbSchema.methods.logName = function () {
var name = this.name
? "The name of the site is " + this.name
: "This one don't have a name"
console.log(name);
}
Cats = mongoose.model('Cats', myDbSchema);
var dublinCat = new Cats({ name: 'Catty1' });
console.log(dublinCat.name);
var londonCat = new Cats({ name: 'Catty1' });
londonCat.logName();
londonCat.save(function (err, cats) {
if (err) return console.error(err);
console.log("All sites: ",cats);
});
//end of mongoos db stuff
app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
app.get('/', function(request, response) {
response.send('Hello World!');
});
app.listen(app.get('port'), function() {
console.log("Node app is running at localhost:" + app.get('port'));
});
我不太清楚你是如何在nodejs上做事的 要获取主干视图所需的数据,必须使用模型/集合 型号: 主干是构成项目基础的域对象的表示形式。您将为每个主干模型定义urlRoot属性。这将标识从服务器返回数据的服务器端资源(restful服务)。主干模型提供了获取和保存数据的隐式方法。当您从模型中调用fetch方法时,get请求将使用url根传递给服务器,url中附加了id(域对象的唯一id) 例如: 假设我的应用程序正在“”上运行,则GET请求url将如下所示: 因此,在节点服务器上,您需要创建并注册一个方法,该方法可以处理请求“rest/user”并键入“GET”。同样,您需要为同一URL的POST、PUT和DELETE注册方法来处理save()和destroy() 收藏: 主干集合是一组模型。对于每个集合,可以定义一个“url”属性,用于从服务器获取数据。例如,您可以为用户列表创建一个集合,并从服务器获取用户 在上面的链接中,有一个简单且很好的带有节点的主干示例 在设计方面,最好有一个EventBus(一个自定义javascript对象),它可以创建视图所需的模型/集合,并进行获取。然后,它创建一个视图,并将获取的模型/集合传递给它,以呈现数据
你好,巴拉吉,谢谢你的回复。我了解主干模型和集合,以及如何使用您所解释的方法检索数据。我的问题是我的MongoDB设置。当我从主干视图和模型调用数据库时,它会说我的“模式”/“数据库模型名称”未定义。我需要与mongoos建立连接,并需要index.js中的express等,但如何从主干模型调用我的DB。如果我定义一个urlRoot,url指向哪里?它不能是localhost,因为当我将它在线部署到heroku时,它将无法工作。'urlRoot'将是REST资源映射到的路径。因此,如果应用程序是您的“express”对象实例,并且您在urlRoot中指定了“/rest/user”,那么您应该在回调中有类似app.get(“/rest/user/:id”,callback)的内容,在回调中连接到数据库,获取数据并将其返回。如果主干客户端代码和服务器端代码在不同的环境中运行,然后,您应该使用$.ajaxPrefilter并使用运行服务器端代码的准确基本url覆盖选项中的url属性。默认情况下,主干将使用运行客户端代码的当前url基本添加urlRoot。好的,我相信我错过了创建REST服务所需的步骤。我将研究如何使用mongodb实现这一点。谢谢巴拉吉