You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NodeJS存储推特流到MongoDB前修改字段值(转ISO日期)

解决Twitter流数据存入MongoDB前修改字段的问题

嘿,这事儿不难!你只需要在把推特数据实例化成Mongoose模型之前,修改tweet对象里的created_at字段就行啦。我给你调整一下代码,直接看修改后的版本更清楚:

修改后的完整代码

var mongoose = require('mongoose'), Twit = require('twit'), fs = require('fs');
mongoose.connect('mongodb://localhost/insert_sample');
var T = new Twit({
  consumer_key: '',
  consumer_secret: '',
  access_token: '',
  access_token_secret: ''
})
var Schema = mongoose.Schema;
// create a schema
var userSchema = new Schema({}, {"strict": false, collection: 'sample_collection', versionKey: false});
// the schema is useless so far
// we need to create a model using it
var User = mongoose.model('User', userSchema);
// make this available to our users in our Node applications
module.exports = User;
//var sanFrancisco = [ 116.8127, 4.4681, 127.492047, 19.594594 ]
var stream = T.stream('statuses/filter', { track: 'philippines vacation, itsmorefuninthephilippines, philippines, boracay, palawan, chocolate hills, mindanao, luzon, visayas, dakak' })
stream.on('tweet', function (obj) {
  // 关键修改:转换created_at字段为ISO格式字符串
  // 如果你想让MongoDB存储为原生Date类型(更适合后续查询),可以直接写 obj.created_at = new Date(obj.created_at);
  obj.created_at = new Date(obj.created_at).toISOString();
  
  var TwitterData = new User(obj); // create object
  TwitterData.save(); // save data to DB
  console.log(obj);
})

为什么这么做?

  • 你原来的代码是直接把原始的推特数据丢进模型里存储,现在我们在实例化User之前,先修改了obj的created_at字段,这样存入数据库的就是转换后的ISO格式字符串啦。
  • 如果你选择直接存储Date对象(注释里的写法),MongoDB会自动把它存为ISODate类型,后续做日期范围查询、排序这类操作会更方便,比存字符串实用多了。

要是你之后还要修改其他字段,比如处理推特里的文本内容、提取特定信息,都可以用同样的思路:在实例化模型前,先修改tweet对象对应的字段就行。

内容的提问来源于stack exchange,提问作者codex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:26:52