简体   繁体   中英

TypeError: Cannot use 'in' operator to search for '_id' in {}

I'm getting this error

*TypeError: Cannot use 'in' operator to search for '_id' in {
at model.Document.$__buildDoc (C:\Users\seanr\projects\DerrickAlphaFebTest\node_modules\mongoose\lib\document.js:210:27)
at model.Document (C:\Users\seanr\projects\DerrickAlphaFebTest\node_modules\mongoose\lib\document.js:61:20)
at model.Model (C:\Users\seanr\projects\DerrickAlphaFebTest\node_modules\mongoose\lib\model.js:51:12)
at new model (C:\Users\seanr\projects\DerrickAlphaFebTest\node_modules\mongoose\lib\model.js:3571:13)
at Request._callback (C:\Users\seanr\projects\DerrickAlphaFebTest\routes.js:24:27)
at Request.self.callback (C:\Users\seanr\projects\DerrickAlphaFebTest\node_modules\request\request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (C:\Users\seanr\projects\DerrickAlphaFebTest\node_modules\request\request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (C:\Users\seanr\projects\DerrickAlphaFebTest\node_modules\request\request.js:1091:12)
at IncomingMessage.g (events.js:291:16)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)*

when I'm trying to create a mongoose model for my mongodb. I'm trying to for-in loop through the response data and save it in my mongodb.

model/orders schema:

var mongoose = require('mongoose'),
bcrypt = require('bcryptjs'),
config = require('../config/database');


var Schema = mongoose.Schema;

var OrderSchema = new Schema({
orders: Object
});

var Orders = mongoose.model('Orders', OrderSchema);

module.exports = Orders;

woocommerce authentication:

WooCommerceAPI = require('woocommerce-api');

var WooCommerce = new WooCommerceAPI({
url: 'https://www.example.com',
consumerKey: 'ck_example',
consumerSecret: 'cs_example',
wpAPI: true,
version: 'wc/v1',
queryStringAuth: true
})

get request and save to mongoose schema:

WooCommerce.get('orders', function(err, data, res){
console.log(res);
for(var orders in res){
    var O = new Orders(orders);
    O.save();
}
});

res is a JSON object.

Another note: it still saves to my database for some reason, but it's almost as if it is in an infinite loop because it saves a lot more data then I expected. I have little experience working with for-in loops but thought that was the best way to approach this. If you have any insight as to where I went wrong I would greatly appreciate it!

I fixed this problem by adding the specifications of the model to my get request.

WooCommerce.get('orders', function(err, data, res){
console.log(res);
for(var orders in res){
var O = new Orders({orders: wooorders});
O.save();
}
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM