我今天更新到了MacOS 10.15(Catalina)。当我mongod在终端中运行时,找不到/data/db目录:
? /Users/william > mongod
2019-10-08T17:02:44.183+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-10-08T17:02:44.209+0800 I CONTROL [initandlisten] MongoDB starting : pid=43162 port=27017 dbpath=/data/db 64-bit host=Williams-MacBook-Pro-6.local
2019-10-08T17:02:44.209+0800 I CONTROL [initandlisten] db version v4.0.3
2019-10-08T17:02:44.209+0800 I CONTROL [initandlisten] git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
2019-10-08T17:02:44.209+0800 I CONTROL [initandlisten] allocator: system
2019-10-08T17:02:44.209+0800 I CONTROL [initandlisten] modules: none
2019-10-08T17:02:44.209+0800 I CONTROL [initandlisten] build environment:
2019-10-08T17:02:44.209+0800 I CONTROL [initandlisten] distarch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL [initandlisten] target_arch: …Run Code Online (Sandbox Code Playgroud) 我正在尝试为mongodb uni课程做作业.他们给了我们一些文件,说明是:
npm install mongodb然后跑node app.js
由于某种原因,npm install不会创建node_modules目录,但我没有看到任何构建错误:
mongo-uni/hw1-2$ npm install mongodb
npm WARN package.json path@0.4.9 path is also the name of a node core module.
npm http GET https://registry.npmjs.org/mongodb
npm http 304 https://registry.npmjs.org/mongodb
npm http GET https://registry.npmjs.org/bson/0.2.5
npm http GET https://registry.npmjs.org/kerberos/0.0.3
npm http 304 https://registry.npmjs.org/kerberos/0.0.3
npm http 304 https://registry.npmjs.org/bson/0.2.5
> kerberos@0.0.3 install /home/jasonshark/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: Entering directory `/home/jasonshark/node_modules/mongodb/node_modules/kerberos/build'
SOLINK_MODULE(target) Release/obj.target/kerberos.node
SOLINK_MODULE(target) Release/obj.target/kerberos.node: Finished
COPY Release/kerberos.node
make: Leaving directory `/home/jasonshark/node_modules/mongodb/node_modules/kerberos/build'
> …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过mongoose将我的节点应用程序连接到mongodb.它似乎正在工作,因为我可以添加文档,但我得到错误{ [Error: Trying to open unclosed connection.] state: 2 }.
我创建了一个非常简单的应用程序,只是为了确保在连接我的实际应用程序之前一切正常.
这是我的简单应用程序:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var timeSchema = new Schema({ timestamp: String });
var Time = mongoose.model('Time', timeSchema);
mongoose.connect('mongodb://localhost/mydb');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error: '));
db.once('open', function () {
var testA = new Test({ timestamp: Date() });
});
Run Code Online (Sandbox Code Playgroud)
我也试过添加db.close()到最后,但它没有任何区别.
这是在Ubuntu 14.04 VPS上运行的:
我试图将star_info属性设置为对象类型(混合模式)并将其默认值设置为空对象使用
star_info: { type : Schema.Types.Mixed, default : { }}
Run Code Online (Sandbox Code Playgroud)
在数据库中,star_info保存文档时没有字段.如何mongoose设置默认值?
由于使用mongodb全文搜索无法通过单词"blue"找到"blueberry",我想帮助我的用户完成"blue"到"blueberry"这个词.为此,是否可以查询mongodb全文索引中的所有单词 - >我可以将这些单词用作建议,即对于typeahead.js?
我已经在Rails平台上构建应用程序已有一年多了.话虽这么说,如果你可以对Rails进行任何比较,它可能会帮助所有相关方.只是一个想法.
无论如何,我试图将我的头围绕节点和前端框架,ember.我最初对MEAN堆栈的绊脚石很感兴趣.在深入研究了一下之后,我意识到我并不是那么喜欢角度,并开始查找替代品.Ember看起来非常棒,如果没有ng-DOM的所有标记,语法似乎更清晰.我想尝试使用mongoDB,我觉得这种方法会教会我很多东西.
我想,我的问题是快递.Express使用Node时的作用是什么?似乎Ember(甚至是Angular,就此而言)有一个非常富有表现力的路由器.在我对这一切的有限理解中,我认为Express是针对路线的吗?我发现了这个,似乎是一堆MEEN.
MEAN的package.json是庞大的,但我联系的MEEN,非常小,只有快递,猫鼬和请求.我想,另一个问题是MEAN/MEEN堆栈中的不同角色是什么?那有意义吗?我有点乱,哈哈,但我希望继续研究和玩这些东西,直到我有'啊哈!' 那一刻,你知道吗?
mongoose - 似乎是一种更好的与mongoDB交互的方式?
express - 特定于节点的路由?
请求 - 看起来很简单.将外部请求发送到Web上的其他页面.我无法看到MEAN中的等效包装是什么,这真的需要吗?
grunt - 运行一堆东西,以便所有不同的部分可以很好地协同工作?
非常感谢任何解释,链接或帮助.
在mongodb.org的mongodb安装文件中运行此命令
./mongo ds045907.mongolab.com:45907/database -u user -p password
Run Code Online (Sandbox Code Playgroud)
我更改了数据库,用户和密码以匿名.
结果如此
Error: couldn't connect to server ds045907.mongolab.com:45907 src/mongo/shell/mongo.js:93
exception: connect failed
Run Code Online (Sandbox Code Playgroud)
也许我被服务器防火墙阻止了?我使用git或brew或pip没问题...
我有这样的模型:
var userSchema = new mongoose.Schema({
_id: { type: Schema.ObjectId },
email: { type: String, unique: true },
ipAddress: { type: String },
referals: [{
type: mongoose.Schema.Types.ObjectId, ref: 'User'
}],
redeem_token: {type: String, unique: true}
});
var User = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)
这可以吗?用户需要具有对其他用户的引用.这是跟踪注册推荐.我想然后使用.Populate并扩展referals []中的用户
在使用mongoDB,express和Node.js的博客中,作者提到缩短属性名称是个好主意:
....经常报告mongoDB的问题是磁盘上数据的大小...每个记录都存储了所有的字段名称....这意味着拥有属性通常可以更节省空间例如't',或'b'而不是'title'或'body',但是为了避免混淆,除非真正需要,否则我会避免这种情况!
我知道如何做到的解决方案.我更感兴趣的是什么时候才真正需要?
目前我有一个名为router.js的文件设置如下:
var Server = require('mongodb').Server;
var MongoDB = require('mongodb').Db;
var dbPort = 31979;
var dbHost = '40.117.155.19';
var dbName = 'node-login';
Run Code Online (Sandbox Code Playgroud)
我想这样设置:
var Server = require('mongodb').Server;
var MongoDB = require('mongodb').Db;
var dbPort = readConfig(dbPort);
var dbHost = readConfig(dbHost);
var dbName = readConfig(dbName);
Run Code Online (Sandbox Code Playgroud)
我将如何实现这一目标.我想有一个文件,如test.config,并能够从router.js中的.config文件中读取dbPort,dbHost和dbName.
mongodb ×4
mongoose ×4
node.js ×4
ember.js ×1
express ×1
javascript ×1
macos ×1
mlab ×1
node-modules ×1
npm ×1