gpt4 book ai didi

javascript - 从 node.js 应用程序调用 Mongoose Model.save() 时挂起

转载 作者:IT老高 更新时间:2023-10-28 23:23:52 24 4
gpt4 key购买 nike

我正在尝试学习 node 和 mongo,以便构建一个简单的 web 应用程序/自学更多关于 web 应用程序的知识。但是,当我调用 Model.save() 时,延续函数似乎永远不会执行,并且数据也没有保存。

这是我目前所拥有的:

/* app.js */

var express = require('express')
, app = express()
, routes = require('./routes')
, http = require('http')
, path = require('path')
, mongoose = require('mongoose')
, db
, Track
, models = require('./models.js');

app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('secretstuff'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));
app.use(function(err, req, res, next){
console.error(err.stack);
res.send(500, 'Something broke!');
});
});

models.defineModels(mongoose, function(){
app.Track = Track = mongoose.model('Track');
db = mongoose.createConnection('localhost','nextrak')
});

app.get('/', routes.index);

app.get('/dbTest', function(req, res){
console.log("Here goes...");
var t = new Track({
name: "TestTrack",
artist: "Artist",
tags: ["test"],
next: ["track1","track2"]
});
console.log("Test Track:");
console.log(t);

t.save(function(){
if(err)
console.log("Error! Couldn't complete dbTest successfully.");
else
console.log("Aw yiss, got dbTest working");
})
});

http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});


/*models.js*/

function defineModels(mongoose, cont){
var Schema = mongoose.Schema;
Track = new Schema({
'name': { type: String, index: true },
'artist': String,
'tags': [String],
'next': [String],
});
mongoose.model('Track', Track);
cont();
}

exports.defineModels = defineModels;

没有抛出任何错误,并且 mongo 日志表明当我启动我的应用程序时启动了 5 个新连接。不会出现新的日志([clientcursormon] 日志除外)。当我在 Chrome 中加载/dbTest 时,该应用程序会打印出以下内容:

来了……

  Test Track:
{ name: 'TestTrack',
artist: 'Basik',
_id: 5031606aa11cf95815000001,
next: [ 'track1', 'track2' ],
tags: [ 'test' ] }

Mongo 似乎配置正确。当我让 Node 运行 Mongoose 引导您完成的简单“入门”脚本时,一切正常。

谁能指出我做错了什么?

最佳答案

您还没有为 Mongoose 创建默认使用的连接。替换这个:

db = mongoose.createConnection('localhost','nextrak')

有了这个:

db = mongoose.connect('localhost', 'nextrak');

几个其他的尼特:

  1. 您将 Track 设置为 models.js 中的全局变量
  2. 您需要在 t.save 回调中添加 err 参数。

关于javascript - 从 node.js 应用程序调用 Mongoose Model.save() 时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com